Glossario / Riferimento per sviluppatori
Catena di certificati
- Che cos'è una catena di certificati?
- Una catena di certificati è la lista ordinata di certificati che collega quello presentato da un server a una radice di cui il tuo dispositivo si fida già, con ogni anello firmato dal successivo.
Le catene esistono perché le chiavi più preziose possano restare offline. Una radice firma qualche certificato intermedio e poi torna in cassaforte, e sono gli intermedi a svolgere il lavoro quotidiano di firmare i server. La verifica procede nella direzione opposta, dal certificato che hai ricevuto fino a qualcosa che il tuo dispositivo aveva già, e fallisce se un anello manca, è scaduto o non viene riconosciuto.
Come funziona
Una catena tipica è composta da tre posizioni, e un server ne trasmette solo due.
In basso c'è il certificato foglia, emesso per un particolare insieme di nomi di dominio. Sopra ci sono uno o più intermedi, il cui scopo è isolare la radice dall'uso quotidiano. In cima c'è la radice, autofirmata e presente nel tuo archivio di certificati fidati da molto prima che visitassi il sito. Il server invia la foglia e gli intermedi, perché inviare la radice aggiungerebbe byte senza dimostrare nulla: una radice conta solo se l'avevi già.
La validazione non è una salita dritta lungo una lista. Un certificato può essere firmato da più di un emittente, pratica chiamata firma incrociata, quindi un client può trovarsi davanti a diversi percorsi candidati e deve trovarne uno che termini in una radice che possiede. Per questo lo stesso sito web si carica su un portatile nuovo e fallisce su uno smartphone vecchio. I percorsi differiscono perché gli archivi di certificati fidati differiscono.
L'esempio più chiaro resta la transizione di Let's Encrypt. La sua stessa radice, ISRG Root X1, era firmata in modo incrociato dalla più vecchia DST Root CA X3, così i dispositivi che non avevano ancora aggiunto X1 potevano comunque costruire un percorso. DST Root CA X3 è scaduta il 30 settembre 2021. I dispositivi che avevano X1 hanno cambiato percorso senza che nessuno se ne accorgesse, mentre le versioni di Android precedenti alla 7.1.1 e diverse biblioteche software TLS legacy non l'hanno fatto, e le connessioni si sono interrotte in tutto il mondo in un solo pomeriggio. Nessuno aveva violato nulla e nessuna chiave era trapelata. Era passata una data.
Dove lo vedi
I problemi della catena sembrano allarmanti e sono quasi sempre banali.
L'errore di configurazione più comune su un server è un intermedio dimenticato. I browser spesso lo nascondono memorizzando nella cache gli intermedi di visite precedenti o recuperandoli da un URL dentro il certificato, così il sito funziona per l'amministratore e fallisce per gli strumenti da riga di comando e per gli smartphone, il che lo rende un bug memorabilmente fastidioso da individuare.
Per chi gestisce bitcoin, la lettura utile di un errore della catena è di diagnostica. Quando un exchange dà un errore di certificato su un dispositivo e funziona su un altro, la differenza è quasi sempre il dispositivo: un orologio di sistema sbagliato, un sistema operativo troppo vecchio per aver ricevuto una radice più recente, o un prodotto antivirus che si inserisce nella connessione. Sistema il dispositivo prima di supporre un attacco, e non fare mai clic per superare l'avviso ed entrare.
L'attestazione dei wallet hardware usa la stessa forma su scala molto più piccola, con una radice del produttore, a volte un intermedio e un certificato conservato nel dispositivo stesso.
Catena di certificati vs certificato radice
Una catena è un percorso; una radice è dove il percorso deve finire. Ogni certificato della catena tranne la radice è fidato solo perché qualcosa sopra di esso l'ha firmato, mentre la radice è fidata perché compare in una lista con cui il tuo dispositivo è stato fornito, e firma se stessa. Aggiungere una radice a quella lista è quindi una decisione molto più grande che accettare qualsiasi altro certificato, ed è esattamente ciò che le reti aziendali e gli strumenti di intercettazione del traffico ti chiedono di fare.