Sono un project manager e sto parlando di un progetto IT composto dal solito database a 3 livelli - web / client - middleware.
In questo caso, ho un server web e devo implementare la certificazione SSL. Anche se questo non è nel mio campo di applicazione, ma ho sentito la comprensione dell'intero processo sarà vantaggioso per tutti.
Comprendo il concetto di crittografia a chiave pubblica e simmetrica.
Capisco il concetto di firma digitale.
Ma non riesco a collocare l'intera immagine insieme. Quindi, per favore mi scusi per il lungo post.
Ecco qui,
-
L'intero motivo della certificazione HTTP / SSL, se non sbaglio, è per 2 scopi
- crittografia (quindi i dati tra client e server web sono protetti)
- autenticazione (in modo che "abc.com" sia effettivamente "abc.com")
Giusto?
Per provare "abc.com" è "abc.com", "abc.com" deve richiedere un certificato da un'autorità di certificazione - che eseguirà controlli in background ecc. prima di rilasciare il certificato.
Il certificato è quindi firmato da CA.
-
Qui, poiché il certificato è firmato digitalmente dalla CA. Quindi, credo, due cose verranno inviate al client quando il client accederà al browser
- il certificato stesso
- hash e firma digitale del certificato
Giusto?
- Poiché il certificato è firmato dalla CA (ad esempio, Verisign), viene crittografato con la sua chiave privata. Quindi dove posso ottenere la chiave pubblica di Verisign?
- Supponendo che la chiave pubblica sia stata ottenuta, la firma digitale viene decrittografata e il valore hash corrisponde al valore hash del certificato,
La chiave pubblica all'interno del certificato (che appartiene al "abc.com") verrà quindi utilizzata dal client per crittografare i suoi dati da inviare a "abc.com".
Giusto?
- Questo "dato" è in realtà parte di una negoziazione tra il client e il server web per l'uso di un uso simmetrico della chiave per la successiva comunicazione.
Una volta stabilita la chiave simmetrica su entrambi i lati, la comunicazione successiva verrà crittografata utilizzando quella chiave simmetrica e non la chiave pubblica all'interno del certificato.
Giusto?
Sto ottenendo questo ad alto livello o sono completamente fuori strada?
(aggiunto)
Ripensandoci, Quando creiamo un certificato autofirmato, come possiamo "passare" la chiave pubblica al cliente oa chiunque stia accedendo al nostro sito web? se la chiave pubblica della firma non viene fornita al client - > è questo lo scenario in cui un popup apparirà sul browser del client e chiederà se "fidarsi" del sito web?