Conosco il concetto generale di funzionamento dei certificati digitali: ad es. il server "firma" il messaggio che desidera inviare al client utilizzando la sua chiave privata e invia un messaggio di digest e sul lato ricevente il client SA la chiave pubblica del server e può verificare che il messaggio sia effettivamente autentico (proviene dal server e non viene modificato in transito) utilizzando una funzione di decrittografia e controllando il contenuto del messaggio, è anche digerire e confermare che il messaggio ricevuto è autentico.
La domanda è: come può il client dire che la chiave pubblica del server inviata in chiaro (suppongo che sia inviata nella risposta ciao al server) sia autentica? Posso capire che le CA di grandi dimensioni hanno i loro certificati già installati sul computer client, ma se il server invia un certificato firmato ad esempio da Digicert, come posso dire al cliente che questo è effettivamente il caso (forse un MIM ha intercettato l'handshake di Ssl cambiando le cose)?
Perchiarirelecosehoaggiuntol'immaginechedescriveilprocessomedianteilqualeilclientverificachelafirmadelcertificatosiareale."Quando il browser riceve il certificato, controlla l'autorità di firma. Se si tratta di un'autorità di firma pubblica e rispettata, il browser conoscerà già la sua chiave pubblica (i browser sono forniti con i certificati di molte autorità di firma preinstallate), quindi può verificare la firma "Domanda: la chiave pubblica dell'autorità di firma deve essere comunicata in qualche modo al client (anche se tale CA è memorizzata localmente, come fai a sapere che cosa usa il server di origine?). Come viene fatto questo processo?