Un certificato è firmato. Ciò significa che viene fornito con la propria sicurezza. La validità di un certificato deriva dalla sua firma da parte di un'autorità di certificazione, non dal modo in cui lo si ottiene. Durante i primi passi di una connessione SSL / TLS ("handshake"), il client deve acquisire una conoscenza affidabile della chiave pubblica del server; il client può farlo in qualsiasi modo lo ritenga opportuno, ma spesso implica trovare un percorso del certificato , ovvero un insieme di certificati che si conclude con un certificato che contiene il nome del server e la chiave pubblica del server. Per semplificare le operazioni, il server include un percorso potenziale in uno dei messaggi di handshake che invia al client.
Validazione di un percorso di certificato implica la verifica della firma su ciascun certificato, per quanto riguarda la chiave pubblica contenuta nel certificato precedente (ci sono molte altre cose che sono controllate, vedi la sezione 6 di RFC 5280 se sei davvero annoiato un giorno). Il punto della firma è di proteggere contro l'alterazione e dimostrare la provenienza. In che modo hai ottenuto il certificato è irrilevante; del resto, potrebbe esserti stato consegnato dal Diavolo stesso, non avrà alcun impatto sulla sicurezza.
Tuttavia, devi ancora essere da qualche parte. Come accennato sopra, la firma di ciascun certificato nel percorso deve essere verificata con la chiave pubblica contenuta nel certificato precedente . Come controlliamo la firma sul primo certificato nel percorso? Per questo, abbiamo bisogno di un trust anchor : è un nome e una chiave pubblica che è noto a priori , ad es. è incorporato nel software client (dopotutto, ti fidi del software stesso per non registrare tutti i dati scambiati e i tuoi colpi chiave, così puoi fidarti anche di questo con l'archiviazione di alcune chiavi pubbliche). Le ancore di sicurezza sono tradizionalmente codificate come certificati radice : non sono certificati reali (la loro firma è fittizia, o spesso una "auto-firma" che non ha alcuna funzione se non quella di riempire lo slot di una firma in un formato di certificato ) ma assumono ancora il formato esterno (come un mucchio di byte) di un certificato.
I "certificati radice" devono essere ottenuti in modo sicuro, poiché non possono essere verificati in alcun modo; tutta la tua fiducia viene da loro. Ecco una sbirciata (all'inizio) dell'elenco dei certificati radice incorporati in Firefox (cioè, i certificati che Mr Firefox ha trovato adatti al suo browser e che io, essendo un utente pigro, "confido" per impostazione predefinita):