Ispettore di certificati TLS
Apriamo una connessione TLS al sito come fa un browser e leggiamo il suo certificato, anche se è rotto. Se qualcosa non va, saprai con quale dei guasti tipici hai a che fare.
A cosa serve un certificato
Quando il tuo browser si collega a https://example.com, qualcosa risponde. Che quel qualcosa appartenga davvero a example.com è un’altra questione. Chiunque si trovi sulla rete nel mezzo potrebbe aver risposto al suo posto.
Per questo il server deve mostrare un documento. Un certificato è un piccolo file che contiene una chiave pubblica, l’elenco dei nomi host per cui quella chiave può parlare, una data di inizio, una data di fine e la firma di un’autorità di certificazione (CA) che ha verificato chi controlla quei nomi. Il browser scorre la sua lista. Il nome nella barra degli indirizzi deve comparire nel certificato. La data di oggi deve cadere tra le due date. La firma deve risalire a un’autorità di cui il dispositivo si fida già. E il server deve dimostrare di avere la chiave privata corrispondente. Basta che ne manchi una e il visitatore vede l’avviso a tutta pagina.
La cifratura comincia solo quando tutto questo torna. Il lucchetto significa che il server ha dimostrato chi è, e la cifratura poggia su questa prova.
Cosa verifica l’ispettore
Si collega due volte alla porta 443. La prima volta accetta qualsiasi cosa, così può leggere il certificato in qualunque stato si trovi. La seconda volta verifica tutto rispetto a un elenco standard di radici fidate, come farebbe un client rigoroso.
| Test | Risultato |
|---|---|
| Date | Rosso se scaduto o non ancora valido. Ambra con meno di 7 giorni rimasti, una nota sotto i 21 giorni, verde altrimenti. |
| Nomi | Rosso se il nome host che hai inserito non è coperto. Ambra se il suo gemello (con o senza www) esiste nel DNS ma manca dal certificato. |
| Fiducia | Se la verifica fallisce, ricevi la causa: scaduto, nome sbagliato, autofirmato, catena incompleta oppure l’errore di verifica grezzo. |
| Ordine della catena | Ambra se i certificati inviati non si firmano l’un l’altro in sequenza. |
| Chiave e firma | Rosso per una chiave RSA sotto i 2048 bit o una firma SHA-1 o MD5. |
| Protocollo | Rosso se la connessione viene negoziata con qualcosa di più vecchio di TLS 1.2. |
Dopo richiede le quattro forme dell’indirizzo (http e https, con e senza www) e mostra dove finisce ognuna e se il sito invia un header HSTS. Se vuoi questa parte passaggio per passaggio, c’è il tracciamento dei redirect.
Funziona in Chrome, fallisce ovunque altrove
Le autorità non firmano il tuo certificato con la loro chiave radice. Lo firmano con un certificato intermedio, che a sua volta è stato firmato dalla radice. I dispositivi conservano solo le radici, quindi il tuo server deve inviare l’intermedio insieme al proprio certificato. I due insieme formano la catena.
Quando un server invia solo il proprio certificato, Chrome ed Edge su desktop sono indulgenti. Spesso scaricano l’intermedio mancante o ne riusano uno visto su un altro sito. Firefox con un profilo nuovo, i vecchi telefoni Android, curl, i webhook di pagamento, i server di posta e la maggior parte delle librerie di programmazione non ti fanno questo favore. È così che ti ritrovi con un sito che al proprietario sembra perfetto e che fallisce per un client API. L’ispettore lo chiama Catena incompleta e lo segnala quando la verifica fallisce ed è stato inviato un solo certificato.
Riparare i guasti tipici
- Scaduto. I certificati automatici si rinnovano circa 30 giorni prima della fine, quindi se il tuo è scaduto, il rinnovo fallisce da settimane. Con Certbot, esegui
certbot renew --dry-rune leggi l’errore. Di solito è un record DNS che è cambiato, un firewall che chiude la porta 80 o un redirect che si mangia/.well-known/acme-challenge/. - Nome non coperto. Richiedi di nuovo il certificato elencando ogni nome host:
certbot -d example.com -d www.example.com. Un wildcard*.example.comcopre un solo livello di sottodomini. Non copreexample.comstesso, e molti ci cascano. - Catena incompleta. Indica al server il file con la catena completa. In nginx:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;. In Apache 2.4.8 e successivi,SSLCertificateFileaccetta lo stesso file. - Autofirmato. Sostituiscilo con un certificato di un’autorità pubblica. Let’s Encrypt, ZeroSSL e Google Trust Services li rilasciano gratis.
- Protocollo vecchio. Attiva TLS 1.2 e 1.3. In nginx:
ssl_protocols TLSv1.2 TLSv1.3;
Puoi vedere la stessa cosa da un terminale con openssl s_client -connect example.com:443 -servername example.com.
L’ispettore parla con un solo indirizzo IP sulla porta 443 e riporta il protocollo negoziato, non tutte le versioni che il server accetterebbe. Un sito distribuito su più server può presentare un certificato diverso su un altro indirizzo. La revoca non viene controllata.
Domande frequenti
SSL e TLS sono la stessa cosa?
TLS è il nome attuale del protocollo. SSL è venuto prima e la sua ultima versione è stata ritirata nel 2015. Si dice ancora «certificato SSL» per abitudine, ma ogni certificato in uso oggi funziona con TLS.
Quanto dura un certificato SSL?
I certificati Let’s Encrypt durano 90 giorni. Per tutte le autorità pubbliche, il massimo consentito è sceso da 398 a 200 giorni a marzo 2026, e scenderà a 100 giorni a marzo 2027 e a 47 giorni a marzo 2029. A questo ritmo, rinnovare a mano smette di essere realistico.
Il mio certificato è valido. Perché il browser dice ancora «Non sicuro»?
Di solito per uno di tre motivi. La pagina è stata aperta in http:// e niente la reindirizza a HTTPS, il certificato non copre esattamente il nome host nella barra degli indirizzi, oppure la pagina carica script o immagini in HTTP semplice. La tabella dei redirect nel risultato ti dirà se si tratta del primo.
Cosa significa ERR_CERT_COMMON_NAME_INVALID?
Il nome host che hai visitato non è nell’elenco dei nomi del certificato. Capita spesso su www quando è stato richiesto solo il dominio nudo, o su un nuovo sottodominio a cui viene servito un certificato predefinito.
Un certificato gratuito è meno sicuro di uno a pagamento?
No. La cifratura è identica e i browser li trattano allo stesso modo. Quello che paghi è l’assistenza, una garanzia o i dati della tua organizzazione dentro il certificato, e i browser non li mettono più in evidenza.
Con quanto anticipo va rinnovato un certificato?
I client automatici rinnovano quando resta un terzo della durata, circa 30 giorni per un certificato da 90 giorni. Se sei sceso a 7 giorni, che è la soglia dove questo controllo inizia ad avvisare, probabilmente l’automazione ha smesso di funzionare.