it-swarm.dev

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

Sto creando un servizio web attraverso il quale la mia azienda parlerà con una serie di servizi ai clienti commerciali. Ci scambiamo informazioni utilizzando SOAP. Vorrei gestire l'autenticazione con i certificati SSL forniti da entrambe le parti, ma sono un po 'persa sul fatto che ci sia 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 di autenticazione lato client, parlano di ottenere un certificato X.509. Queste due parole sono per la stessa cosa, possono essere trasformate l'una nell'altra o c'è qualche altra differenza che non sto afferrando?

97

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 tramite SSL o per l'identificazione. I certificati SSL sono un tipo di certificato X509. SSL funziona crittografando il traffico e verificando la parte (Verisign crede che questo sito Web sia quello che dicono di essere, quindi probabilmente anche tu potresti). Verisign funge da autorità di certificazione (CA). La CA si fida del fatto che tutto ciò che dice dovrebbe essere considerato come vero (L'esecuzione di una CA richiede importanti considerazioni sulla sicurezza). Pertanto, se una CA ti fornisce un certificato che dice che si fida di essere veramente te, 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 (cerca qualcosa su SSL in IE e osserva le proprietà del certificato) o esegui certmgr.msc e visualizzi un certificato, guarda la scheda Dettagli> Utilizzo chiave. Ciò determinerà ciò che il certificato può fare/essere utilizzato per.

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

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

65
Steve

In TLS, il server deve disporre di una chiave privata e di un certificato (a volte noto come cert server). Il certificato del server identifica e autentica il server. Opzionalmente, il client può anche avere la propria chiave privata e certificato (di solito chiamato client cert). Se viene utilizzato un certificato client, identifica e autentica il client.

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

Tuttavia, in molti contesti programmatici, in genere si vorranno autenticare entrambi gli endpoint. Pertanto, si desidera utilizzare sia certificati server che 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 di un'autorità di certificazione (CA). Sul Web, in genere i siti Web dispongono di un certificato server emesso (firmato) da Verisign o da un'altra CA nota. I browser Web vengono forniti con un elenco di quasi 100 CA diverse, i siti Web preinstallati e più utilizzati dispongono di un certificato server emesso da una di queste CA. Ad esempio, Verisign è una delle CA presenti nell'elenco standard delle CA di tutti i browser. Verisign ti addebita i soldi, se vuoi che ti emettano un certificato.

L'alternativa per far firmare il tuo certificato da una CA standard è che puoi usare un certificato autofirmato: un certificato che viene emesso, non da una delle CA standard, ma da te stesso (o da chiunque desideri). Questo non è terribilmente ampiamente usato sul web, perché i certificati dei server autofirmati fanno apparire i browser finestre di dialogo di avviso all'utente, che la maggior parte dei siti Web cerca di evitare. Tuttavia, per usi programmatici, i certificati autofirmati possono funzionare correttamente. E se usi certificati autofirmati, non devi pagare denaro Verisign. Puoi trovare tutorial su come usare gli strumenti da riga di comando di OpenSSL per creare i tuoi certificati autofirmati.

SSL è 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 incoraggio a leggere articolo di Wikipedia sul certificato di chiave pubblica per uno sfondo più utile.

36
D.W.

Certs SSL "normali" in genere are X.509 certs.
Tuttavia, questi possono essere utilizzati solo per l'autenticazione e la crittografia del server: uno degli attributi di certs è lo scopo designato e di solito non è possibile utilizzarlo per uno scopo diverso.
Oltre a ciò, tuttavia, un certificato client è praticamente identico a un certificato server, appena designato come "Autenticazione client".

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

15
AviD

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

4
Jeff Ferland