Domanda:
Qual è la differenza tra un "certificato client" X.509 e un normale certificato SSL?
Brandon Yarbrough
2011-01-04 00:38:30 UTC
view on stackexchange narkive permalink

Sto configurando un servizio web attraverso il quale la mia azienda dialogherà con una serie di servizi per clienti aziendali. Scamberemo informazioni utilizzando SOAP. Vorrei gestire l'autenticazione con certificati SSL forniti da entrambe le parti, ma sono un po 'perso sul fatto che ci sia una differenza fondamentale tra i tipi di certificati.

Quando si parla di HTTPS, si parla di ottenere un certificato SSL di Verisign o di un'altra autorità. Quando parlano di autenticazione lato client, parlano di ottenere un certificato X.509. Queste due parole significano la stessa cosa, possono essere trasformate una nell'altra o c'è qualche altra differenza che non sto afferrando?

Quattro risposte:
#1
+66
Steve
2011-01-04 00:52:57 UTC
view on stackexchange narkive permalink

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 si fida che questo sito Web sia chi dice di essere, quindi probabilmente potresti farlo anche tu). Verisign funge da autorità di certificazione (CA). La CA è attendibile in quanto tutto ciò che dice dovrebbe essere considerato vero (l'esecuzione di una CA richiede importanti considerazioni sulla sicurezza). Pertanto, se una CA ti fornisce un certificato dicendo che si fida che tu sia 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 utilizzato solo per determinate attività.

Se apri un certificato in Windows (seleziona qualcosa su SSL in IE e guarda le proprietà del certificato) o esegui certmgr.msc e visualizza un certificato, guarda i Dettagli scheda> Utilizzo chiave. Ciò determinerà ciò per cui il certificato può fare / essere utilizzato.

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 richiesta SOAP, passa il certificato al servizio web per comunicargli chi sta effettuando la richiesta.

Ah, pulito, quindi tutti i certificati SSL sono certificati x509, il che significa che posso semplicemente prendere un certificato SSL da Verisign e usarlo per le richieste dei client. Tuttavia, un certificato X509 non ha necessariamente un utilizzo impostato per consentire l'identità o l'autenticazione. Figo, grazie!
@CaptainAwesomePants, potresti essere in grado di utilizzare il certificato SSL di Verisign come certificato client. Se l'utilizzo della chiave non include l'autenticazione client, probabilmente non verrà accettata per l'autenticazione client.
Bella risposta. Ma la tua introduzione è un errore confuso: "Un certificato X509 è un tipo di coppia di chiavi pubblica / privata". Se la chiave privata fosse lì, non potresti pubblicarla ... Potresti aggiustarlo?
@nealmcb aggiornato. Hai ragione, tuttavia nel mondo .NET dev, un X509Certificate può contenere anche la chiave privata. Penso che sia per questo che ho scritto quello che ho fatto.
@CaptainAwesomePants in realtà, non tutti i certificati SSL / TLS sono certificati X.509. Potresti usare i certificati OpenPGP (vedi RFC 5081 http://tools.ietf.org/html/rfc5081), ma è abbastanza raro (pochi stack li supportano per quanto ne so).
#2
+37
D.W.
2011-01-07 11:32:44 UTC
view on stackexchange narkive permalink

In TLS, il server deve avere una chiave privata e un certificato (a volte noto come certificato del server). Il server cert identifica e autentica il server. Il client può facoltativamente avere anche la propria chiave privata e il proprio certificato (di solito chiamato certificato client). 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 il server con cui sta parlando, ma il server non può autenticare il client a cui si connette.

Tuttavia, in molti contesti programmatici, in genere si desidera che entrambi gli endpoint si autenticino a vicenda . Pertanto, ti consigliamo di utilizzare sia certificati server che 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 di un'autorità di certificazione (CA). Sul Web, in genere i siti Web dispongono di un certificato del server rilasciato (firmato) da Verisign o da qualche altra nota CA. I browser Web vengono forniti con un elenco di quasi 100 CA diverse, i siti Web preinstallati ei siti Web più utilizzati hanno un certificato del server rilasciato da una di queste CA. Ad esempio, Verisign è una delle CA nell'elenco standard di CA di ogni browser. Verisign ti addebita denaro se desideri che ti rilasci un certificato.

L'alternativa per ottenere la firma del certificato da una CA standard è che è possibile utilizzare un certificato autofirmato: un certificato emesso non da una delle CA standard, ma da te (o da chiunque tu voglia). Questo non è molto diffuso sul Web, perché i certificati del server autofirmati fanno sì che i browser visualizzino finestre di dialogo di avviso per l'utente, che la maggior parte dei siti Web cerca di evitare. Tuttavia, per gli usi programmatici, i certificati autofirmati potrebbero funzionare correttamente. E se utilizzi certificati autofirmati, non devi pagare denaro a Verisign. Puoi trovare tutorial su come utilizzare gli strumenti della 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 incoraggio a leggere l ' articolo di Wikipedia sul certificato di chiave pubblica per informazioni più utili.

(commento simile a quello dell'altra risposta): in senso stretto, non tutti i certificati TLS sono certificati X.509 e ho appena notato che RFC 5081 è stato aggiornato di recente: RFC 6091 http://tools.ietf.org/html / rfc6091
Affinché un server supporti l'autenticazione del certificato client, il server deve supportare anche SSL del server? Quando leggo i tutorial sull'autenticazione del certificato client, sembrano tutti suggerire che anche il server deve avere un certificato SSL.
@CMCDragonkai, sì. I certificati client vengono utilizzati con SSL / TLS, quindi il server deve utilizzare SSL / TLS. Per il futuro, poni nuove domande in una domanda separata, non come commenti sotto una domanda esistente.
#3
+15
AviD
2011-01-04 04:07:53 UTC
view on stackexchange narkive permalink

I certificati SSL "normali" in genere sono certificati X.509.
Tuttavia, questi possono essere utilizzati solo per l'autenticazione e la crittografia del server: uno degli attributi dei certificati è lo scopo designato e di solito non puoi usarlo per uno scopo diverso.
A parte questo, però, un certificato client è praticamente identico a un certificato server, designato semplicemente 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.

#4
+4
Jeff Ferland
2011-01-04 00:46:40 UTC
view on stackexchange narkive permalink

Funzionalmente, sono gli stessi: una chiave RSA pubblica e informazioni di identificazione firmate da un'autorità. In pratica, le chiavi del tuo server sono solitamente impostate con un nome comune che identifica il dominio in questione (* .wikimedia.org, ad esempio). Non credo che ci sia nulla che ti limiti a utilizzare un certificato, incluso l'autogenerazione, a condizione che soddisfi i requisiti di autenticazione dell'altra parte.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...