Sto cercando di capire come funzionano i certificati SSL / TLS, ma mi manca qualcosa. Ho ottenuto la mia attuale comprensione da questo sito: link .
Ho anche visto questo post: Come funzionano i processi per certificati digitali, firme e ssl?
Dopo aver esaminato entrambi i link per l'ennesima volta, il vero mistero per me circonda il modo in cui il client verifica il certificato del server.
Ecco la mia comprensione dei passaggi:
1. Certificate Authority (CA) gives an encrypted root certificate to a server.
2.a. Server gives client a locally encrypted certificate and a public key.
2.b. Server gives client a root certificate which is decrypted with the public key already on the client's computer.
3. Client uses public keys to decrypt certificates.
4. Certificates contains information that satisfies client of servers authenticity.
Probabilmente mi mancano alcune informazioni critiche in ogni fase e probabilmente mancano anche dei passaggi qui. Supponiamo che io sia il cliente. Ecco le mie domande:
Q0. Come faccio a sapere (il cliente) che dovrei usare la chiave pubblica fornita per decifrare il certificato? In altre parole, se un impostore può ottenere un certificato decrittografato (quale - chi non può visitare chi riceve il server?); può l'impostore criptare il certificato con la sua chiave privata e darmi una nuova chiave pubblica?
In questo caso, penso che dovrei essere in grado di decifrare il certificato. Il semplice controllo del testo potrebbe semplicemente non funzionare. Ma l'impostore può modificare il testo in chiaro per rendere il mio browser felice?
D1. Cosa succede se un impostore mi ha semplicemente inoltrato il certificato crittografato? Lo decifrerei con una vera chiave pubblica. Probabilmente c'è qualcosa nel mio passaggio 4 che mi manca.
In questo caso, ancora una volta il certificato clear-text deve avere alcune informazioni che rivelino che è cattivo. Cos'è questa informazione?
Q2. Sono presenti informazioni di testo in chiaro nel certificato decrittografato che convalida che I (il client) sono connesso al server a cui desidero connettermi? Sono sicuro che il certificato dovrebbe dire qualcosa come "da stackoverflow.com". Dato che questo è fatto da un computer, presumo che ci siano molti confronti fatti?
Q2.a Come faccio a sapere (io il cliente) che ho il certificato corretto? Ad esempio, se stackoverflow.com mi ha inviato un certificato per Amazon.com, in che modo il browser rileva un problema se (per motivi dannosi) il certificato viene decifrato?