Tips & Tricks: Verifica della Catena di Certificati SSL/TLS con OpenSSL
Cos’è la catena di certificati
La catena di certificati è un elenco ordinato di certificati, comprendente un certificato SSL/TLS e certificati di autorità di certificazione (CA), che consente al destinatario di verificare che il mittente e tutte le CA, che hanno rilasciato quei certificati siano affidabili.
La catena, o percorso, inizia con il certificato SSL/TLS e ogni certificato della catena è firmato dall’entità identificata dal certificato successivo nella catena.
La catena di certificati che riferisce al nostro certificato TLS/SSL è il modo in cui è collegato a un’Autorità di Certificazione. Affinché un certificato TLS sia considerato attendibile, deve essere riconducibile, tramite relazione di fiducia, alla CA che lo ha firmato, il che presuppone che tutti i certificati della catena (server, intermedi e root) siano attendibili.
Comprendere i certificati root e i certificati intermedi
Certificato root.
- Un certificato root è un certificato digitale che appartiene all’Autorità di Certificazione (CA) emittente. È preinstallato nella maggior parte dei browser e viene memorizzato in un archivio denominato “trust store”. I certificati root devono essere custoditi con la massima cura dalle CA.
Certificato intermedio.
- I certificati intermedi discendono (gerarchicamente) dai certificati root come i rami degli alberi. Fungono da intermediari tra i certificati root (mantenuti riservati e protetti) e i certificati leaf (foglia) rilasciati al pubblico; è quindi molto frequente che nella catena si presente almeno un certificato intermedio e talvolta più di uno.
- Il certificato leaf (la parte terminale della catena) è quello rilasciato al soggetto specifico per il quale si necessita di copertura (server web, un utente o un dispositivo).
Come funzionano le catene di certificati?
Quando viene fatta richiesta per ottenere un certificato TLS alle autority riconosciute (es. letsencrypt, cloudflare, zerossl, etc) ci viene inviato il nostro certificato insieme a uno o più certificati intermedi.
Negli strumenti che fanno uso di crittografia TLS (browser, server di posta, vpn, etc), il meccanismo di verifica è implicito.
Facendo un semplice esempio, quando si naviga, il browser scarica il certificato TLS del sito web visitato iniziando a tracciare la catena di certificati fino al certificato intermedio installato sul web server che espone la pagina visitata. Se il certificato (leaf) sarà considerato valido e può essere collegato a un certificato intermedio attendibile, tutta la catena sarà considerata attendibile altrimenti, il browser mostrerà un avviso di certificato non attendibile.
Di seguito sono indicati acuni comandi di esempio, utilizzabili da tutti i sistemi operativi con OpenSSL installato (per l’installazione su Windows puoi guardare qui).
Esempio di verifica della catena di certificati per un web server
echo Q | openssl s_client -showcerts -connect 51.178.55.25:443 -servername www.nicolamontemurro.com
Esempio di verifica della catena di certificati per un mail server
echo Q | openssl s_client -starttls smtp -showcerts -connect 51.178.55.25:25 -servername smtp1.services.solutiontech.it
NOTA: l’argomento starttls accetta le seguenti opzioni: smtp, pop3, imap, ftp, xmpp, xmpp-server, irc, postgres, mysql, lmtp, nntp, sieve, ldap.
Per la documentazione openssl s_client puoi fare riferimento al sito ufficiale qui.