Qual è la differenza tra un "certificato cliente" X.509 e un normale certificato SSL?

91

Sto creando un servizio web attraverso il quale la mia azienda parlerà con un numero di servizi di clienti business. Ci scambiamo le informazioni usando SOAP. Vorrei gestire l'autenticazione con i certificati SSL forniti da entrambe le parti, ma sono un po 'perso sul fatto che esista una differenza fondamentale tra i tipi di certificati.

Quando le persone parlano di HTTPS, parlano di ottenere un certificato SSL da Verisign o da un'altra autorità. Quando parlano dell'autenticazione lato client, parlano di ottenere un certificato X.509. Sono queste due parole per la stessa cosa, si può essere trasformati nell'altra o un'altra differenza che non sto afferrando?

    
posta Brandon Yarbrough 03.01.2011 - 19:38
fonte

4 risposte

60

Un certificato X509 è un tipo di chiave pubblica in una coppia di chiavi pubblica / privata. Queste coppie di chiavi possono essere utilizzate per cose diverse, come la crittografia via SSL o per l'identificazione. I certificati SSL sono un tipo di certificato X509. SSL funziona crittografando il traffico e verificando la parte (Verisign ritiene che questo sito Web sia quello che dicono di essere, quindi probabilmente lo si potrebbe fare anche tu). Verisign funge da autorità di certificazione (CA). La CA è fidata in quanto tutto ciò che dice dovrebbe essere considerato come vero (l'esecuzione di una CA richiede importanti considerazioni di sicurezza). Pertanto, se una CA ti fornisce un certificato che afferma di essere realmente tu, hai un certificato utente / certificato client.

Alcuni di questi tipi di certificati possono essere utilizzati su tutta la linea, ma altri possono essere utilizzati solo per determinate attività.

Se apri un certificato in Windows (vai a qualcosa su SSL in IE e guardi le proprietà del certificato) o esegui certmgr.msc e visualizza un certificato, guarda la scheda Dettagli > Utilizzo chiave. Ciò determinerà a cosa è permesso / essere usato il certificato.

Per SOAP, il certificato può essere utilizzato per due cose: identificazione e crittografia. Bene, tre se includi le firme dei messaggi (hashing del messaggio).

I certificati client identificano il client o l'utente chiamante. Quando l'applicazione effettua una richiesta SOAP, passa il certificato al servizio web per dirgli chi sta effettuando la richiesta.

    
risposta data 03.01.2011 - 19:52
fonte
32

In TLS, al server è richiesto di avere una chiave privata e un certificato (talvolta noto come certificato del server). Il certificato server identifica e autentica il server. Opzionalmente il cliente può avere anche la sua chiave privata e il suo certificato (di solito chiamato un certificato cliente). Se viene utilizzato un certificato cliente, identifica e autentica il client.

Sul Web, con HTTPS, in genere il server ha un certificato server ma i certificati client non vengono utilizzati. Ciò significa che il client può autenticare il server con cui sta parlando, ma il server non può autenticare il client che si sta connettendo ad esso.

Tuttavia, in molti contesti programmatici, in genere si desidera che entrambi gli endpoint si autenticano a vicenda. Pertanto, vorrai utilizzare sia i certificati server che i certificati client.

In TLS, tutti i certificati sono certificati X.509. X.509 è solo il formato dei dati.

I certificati includono una chiave pubblica e una firma da un'autorità di certificazione (CA). Sul web, in genere i siti Web hanno un certificato server che viene emesso (firmato) da Verisign o da un'altra CA ben nota. I browser Web sono dotati di un elenco di quasi 100 CA diverse, preinstallate e i siti Web più utilizzati hanno un certificato server emesso da una di queste CA. Ad esempio, Verisign è una delle CA nell'elenco di CA standard di ogni browser. Verisign ti addebita denaro, se vuoi che ti rilasciano un certificato.

L'alternativa a far firmare il cert da una CA standard è che puoi usare un certificato autofirmato: un certificato che viene emesso, non da una CA standard, ma da te (o da chiunque tu voglia). Questo non è molto diffuso sul web, perché i certificati server autofirmati fanno sì che i browser facciano apparire all'utente le finestre di dialogo che la maggior parte dei siti cerca di evitare. Tuttavia, per gli usi programmatici, i certificati autofirmati possono funzionare correttamente. E se utilizzi certificati autofirmati, non devi pagare i soldi di Verisign. Puoi trovare tutorial su come utilizzare gli strumenti da riga di comando di OpenSSL per creare i tuoi certificati autofirmati.

SSL è un sinonimo di TLS. (Tecnicamente, SSL è il nome utilizzato con diverse versioni precedenti dello standard e TLS è un nuovo nome per diverse versioni più recenti degli standard. Tuttavia molte persone usano i due termini in modo intercambiabile.)

Ti invito a leggere l' articolo di Wikipedia sul certificato di chiave pubblica per avere uno sfondo più utile.

    
risposta data 07.01.2011 - 06:32
fonte
13

Certificati SSL "normali" tipicamente sono certificati X.509.
Tuttavia, questi possono essere utilizzati solo per l'autenticazione e la crittografia del server: uno degli attributi di certificati è il suo scopo designato e di solito non è possibile utilizzarlo per uno scopo diverso.
A parte questo, però, un certificato cliente è praticamente identico a un certificato server, appena indicato come "Autenticazione client".

Funzionalmente, troverai spesso che alcuni sistemi scelgono di accettare solo un sottoinsieme di certificati client, ad es. quelli emessi dalla propria CA.

    
risposta data 03.01.2011 - 23:07
fonte
3

Funzionalmente, sono uguali: una chiave RSA pubblica e informazioni identificative firmate da un'autorità. In pratica, le chiavi del tuo server sono solitamente configurate con un nome comune che identifica il dominio in questione (* .wikimedia.org, ad esempio). Non credo che ci sia nulla che ti impedisca di utilizzare un certificato, anche autogenerato, purché corrisponda ai requisiti di autenticazione dell'altra parte.

    
risposta data 03.01.2011 - 19:46
fonte