2013-07-15 17:55:20 +0000 2013-07-15 17:55:20 +0000
145
145

Qual è la differenza tra un certificato e una chiave per quanto riguarda SSL?

Ogni volta che cerco di capire qualcosa su SSL ho sempre difficoltà a tenere traccia di ciò che “chiave” e “certificato” si riferiscono. Temo che molte persone li usino in modo scorretto o intercambiabile. C'è una differenza standard tra una chiave e un certificato?

Risposte (6)

131
131
131
2013-07-15 18:01:21 +0000

Un certificato contiene una chiave pubblica.

Il certificato, oltre a contenere la chiave pubblica, contiene informazioni aggiuntive come l'emittente, per cosa si suppone che il certificato sia usato e altri tipi di metadati.

Tipicamente, un certificato è a sua volta firmato da un'autorità di certificazione (CA) usando la chiave privata della CA. Questo verifica l'autenticità del certificato.

78
78
78
2017-04-05 11:16:31 +0000
40
40
40
2015-12-16 06:40:51 +0000

Diciamo che l'azienda A ha una coppia di chiavi e ha bisogno di pubblicare la sua chiave pubblica per uso pubblico (aka ssl sul suo sito web).

  • L'azienda A deve fare una richiesta di certificato (CR) a un'autorità di certificazione (CA) per ottenere un certificato per la sua coppia di chiavi.
  • La chiave pubblica, ma non la chiave privata, della coppia di chiavi dell'azienda A è inclusa come parte della richiesta di certificato.
  • La CA usa quindi le informazioni sull'identità dell'azienda A per determinare se la richiesta soddisfa i criteri della CA per l'emissione di un certificato.
    Se la CA approva la richiesta, rilascia un certificato all'azienda A. In breve la CA firma la chiave pubblica dell'azienda A con la sua chiave privata (della CA), che ne verifica l'autenticità.

Quindi la chiave pubblica dell'azienda A firmata con la chiave privata di una CA valida si chiama certificato dell'azienda A.

8
8
8
2018-05-09 20:57:51 +0000

Lasciatemi spiegare con un esempio.

In una normale PKI basata su coppie di chiavi, ci sono la chiave privata e la chiave pubblica.

In un sistema basato sul certificato, ci sono la chiave privata e il certificato. Il certificato contiene più informazioni della chiave pubblica.

Demo (Puoi generare un certificato e una chiave privata): http://www.selfsignedcertificate.com/

Puoi scaricare il file della chiave privata e il file del certificato, vedrai che il file del certificato contiene molte informazioni come mostrato sotto.

Puoi abbinare il tuo certificato generato (aprendo con un editor di testo), e la chiave privata (aprendo con un editor di testo) da questo sito: https://www.sslshopper.com/certificate-key-matcher.html

Se il certificato corrisponde alla chiave privata del cliente, il cliente è sicuro, che il certificato è dato dal cliente o dato dall'agente di fiducia del cliente (CA).

Tuttavia, ci sono problemi nella comunicazione basata solo sulla chiave privata e sul certificato.

Perché, chiunque può generare il proprio certificato e la propria chiave privata, quindi un semplice handshake non prova nulla sul server se non che il server conosce la chiave privata che corrisponde alla chiave pubblica del certificato. Un modo per risolvere questo problema è che il client abbia un insieme di uno o più certificati di cui si fida. Se il certificato non è nell'insieme, il server non è affidabile.

Ci sono diversi lati negativi in questo semplice approccio. I server dovrebbero essere in grado di aggiornarsi a chiavi più forti nel tempo (“rotazione delle chiavi”), che sostituisce la chiave pubblica nel certificato con una nuova. Sfortunatamente, ora l'applicazione client deve essere aggiornata a causa di quello che è essenzialmente un cambiamento di configurazione del server. Questo è particolarmente problematico se il server non è sotto il controllo dello sviluppatore dell'app, per esempio, se è un servizio web di terze parti. Questo approccio ha anche problemi se l'app deve parlare con server arbitrari come un browser web o un'app di posta elettronica.

Al fine di affrontare questi aspetti negativi, i server sono tipicamente configurati con certificati da emittenti ben noti chiamati Autorità di Certificazione (CA). a piattaforma ospite (client) generalmente contiene una lista di CA ben note di cui si fida. Come un server, una CA ha un certificato e una chiave privata. Quando emette un certificato per un server, la CA firma il certificato del server usando la sua chiave privata. Il client può quindi verificare che il server abbia un certificato emesso da una CA nota alla piattaforma.

Tuttavia, pur risolvendo alcuni problemi, l'uso delle CA ne introduce un altro. Poiché la CA emette certificati per molti server, avete ancora bisogno di un modo per assicurarvi che state parlando con il server che volete. Per risolvere questo problema, il certificato emesso dalla CA identifica il server o con un nome specifico come gmail.com o con un insieme di host con caratteri jolly come *.google.com.

L'esempio seguente renderà questi concetti un po’ più concreti. Nello snippet qui sotto da una linea di comando, il comando s\client dello strumento openssl guarda le informazioni sul certificato del server di Wikipedia. Specifica la porta 443 perché è quella predefinita per HTTPS. Il comando invia l'output di openssl s_client a openssl x509, che formatta le informazioni sui certificati secondo lo standard X.509. In particolare, il comando chiede l'oggetto, che contiene le informazioni sul nome del server, e l'emittente, che identifica la CA.

$ openssl s_client -connect wikipedia.org:443 | openssl x509 -noout -subject -issuer
subject= /serialNumber=sOrr2rKpMVP70Z6E9BT5reY008SJEdYv/C=US/O=*.wikipedia.org/OU=GT03314600/OU=See www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=*.wikipedia.org
issuer= /C=US/O=GeoTrust, Inc./CN=RapidSSL CA

Puoi vedere che il certificato è stato emesso per i server corrispondenti a *.wikipedia.org dalla CA RapidSSL.

Come puoi vedere, grazie a queste informazioni aggiuntive inviate dalla CA ai server, il client può facilmente sapere se sta comunicando con il suo server o meno.

3
3
3
2013-07-15 18:02:53 +0000

Un certificato SSL è ottenuto da una Certification Authority di fiducia, che garantisce la connessione sicura del sito web. I certificati SSL contengono di solito il logo di autenticazione e anche le chiavi pubbliche necessarie per criptare e decriptare i dati che devono essere inviati al computer. Funzioni delle chiavi SSL

Diverse chiavi SSL possono essere generate durante una sessione. Esse vengono utilizzate per crittografare e decrittografare le informazioni inviate da e verso il computer. Le chiavi vengono utilizzate per verificare che le informazioni non siano state modificate o manomesse.

Differenza di ciclo di vita

I certificati durano più a lungo delle chiavi SSL. I certificati SSL si ottengono dalla Certification Authority, che può essere rinnovata regolarmente da banche e imprese. Le chiavi SSL o le chiavi di sessione, d'altra parte, sono generate in modo univoco durante la sessione e scartate quando la sessione termina. Leggi qui

2
2
2
2016-05-12 01:49:31 +0000

OK, scomponiamo questo in modo che le persone non tecniche possano capire.

Pensate a questo. Un certificato è come una cassetta di sicurezza della vostra banca. Contiene un sacco di roba importante; generalmente roba che contiene la vostra identità. Il certificato ha una chiave pubblica e ha bisogno di una chiave privata per aprirlo.

Anche la tua cassetta di sicurezza richiede due chiavi per essere aperta, proprio come un certificato.
Con una cassetta di sicurezza, la chiave del banchiere è come la chiave pubblica poiché rimane alla banca e la chiave pubblica rimane con il certificato. Tu hai la chiave privata, che è necessaria per “ottenere il tuo certificato” e nell'esempio della cassetta di sicurezza, oltre alla chiave pubblica è necessaria anche la tua chiave privata.

Prima che tu possa effettivamente aprire la tua cassetta di sicurezza, devi prima verificare la tua identità (un po’ come una richiesta di certificato); una volta che sei stato identificato, usi la tua chiave privata insieme alla chiave pubblica per aprire la tua cassetta di sicurezza. Questo è un po’ come fare la vostra richiesta di certificato, e poi ottenere il vostro certificato dall'autorità di certificazione (finché potete essere identificati (fidati) e avete la chiave giusta).