Glossario / Riferimento per sviluppatori
Certificato intermedio
- Che cos'è un certificato intermedio?
- Un certificato intermedio si colloca tra una radice e una foglia: è firmato dalla radice e firma la foglia, così la chiave privata della radice può restare offline e inutilizzata.
Le autorità di certificazione non firmano mai il certificato di un sito web con la chiave della radice. Firmano un certificato intermedio, mettono la chiave della radice offline ed emettono dal certificato intermedio, che può essere sostituito in settimane anziché nei vent'anni in cui vive una radice. Quando un server dimentica di inviare il proprio certificato intermedio, i browser mascherano la lacuna e i client più rigorosi no, così un sito può sembrare a posto in Chrome e fallire in un'app.
Come funziona
Un certificato intermedio è un certificato di autorità che non è un'ancora di fiducia. Porta l'estensione basicConstraints con CA impostato su true, che gli consente di firmare altri certificati, ed è a sua volta firmato da una radice o da un altro certificato intermedio. La verifica risale dal certificato del server verso l'alto, confrontando ogni firma con la chiave contenuta nel certificato sovrastante, e si ferma quando raggiunge qualcosa già presente nell'archivio di fiducia locale.
Separare così l'emissione offre tre vantaggi. La chiave della radice resta in un modulo offline che esce solo per cerimonie programmate e alla presenza di testimoni. Il danno resta circoscritto, perché un certificato intermedio compromesso può essere revocato e riemesso senza toccare l'archivio delle radici di alcun dispositivo. E un'autorità può separare le proprie linee di prodotto, così un problema nel livello economico e automatizzato non coinvolge quello sottoposto a revisione.
La firma incrociata è l'espediente che rende utilizzabile un'autorità nuova. Una stessa chiave intermedia può avere due certificati: uno firmato dalla radice della propria organizzazione, uno firmato da una radice consolidata che è già presente sui dispositivi vecchi. Let's Encrypt vi si è affidata per anni, perché ISRG Root X1 mancava dalle versioni di Android che avevano smesso di ricevere aggiornamenti, così serviva una catena con firma incrociata da IdenTrust. La stampella è sopravvissuta alla radice che aveva dietro, scaduta il 30 settembre 2021, e Let's Encrypt ha infine smesso di servire la catena con firma incrociata il 6 giugno 2024.
L'assemblaggio della catena è la parte in cui gli operatori sbagliano. Un server dovrebbe inviare il proprio certificato più ogni certificato intermedio sopra di esso, fermandosi prima della radice, che il client ha già. I browser nascondono le omissioni scaricando il pezzo mancante dall'URL nell'estensione di accesso alle informazioni dell'autorità o riutilizzando una copia in cache. Una biblioteca software di pagamenti, un'app mobile o un client da riga di comando di solito non fa né l'una né l'altra cosa e si limita a segnalare una catena non attendibile.
Dove lo vedi
BIP70 includeva i certificati intermedi nel messaggio di pagamento stesso. Il campo pki_data portava una struttura X509Certificates il cui primo elemento era il certificato del commerciante stesso, seguito dai certificati intermedi necessari a raggiungere una radice, con la radice omessa perché ci si aspettava che il wallet la tenesse già. È esattamente l'ordine che invia un server TLS, trasferito in un protocol buffer.
Fuori da bitcoin, i certificati intermedi si fanno notare ogni volta che una connessione riesce in un programma e fallisce in un altro. Un exchange il cui endpoint API restituisce un errore di certificato a uno script di trading mentre il sito web si carica normalmente ha quasi sempre omesso un certificato intermedio dalla propria catena. Verificare con uno strumento che non esegue la riparazione silenziosa del browser è il modo per scoprirlo prima del tuo bot.
Certificato intermedio vs certificato radice
Una radice e un certificato intermedio sono entrambi certificati di autorità, e la differenza sta in chi li ha firmati e in dove risiede la chiave. Una radice è autofirmata e trae il proprio potere dalla lista di inclusione di un fornitore. Un certificato intermedio trae il proprio potere dalla firma che ha sopra, il che significa che l'autorità emittente può revocarlo in un pomeriggio, senza alcun aggiornamento software da nessuna parte. Nell'operatività quotidiana il certificato intermedio fa quasi tutte le firme mentre la radice non ne fa quasi nessuna, e questa asimmetria è l'intera ragione per cui esiste il livello.