Monitoraggio della scadenza del certificato SSL: non scoprirlo dal cliente
Il monitoraggio della scadenza del certificato SSL è il controllo automatico e ripetuto di quanti giorni restano al certificato TLS di un sito, con un avviso che arriva abbastanza presto da poterlo rinnovare. Quando un certificato scade, il browser sostituisce la pagina con un avviso a tutto schermo: form, login e checkout smettono di funzionare e il traffico crolla quasi subito.
Raramente scade il certificato del sito principale che tutti tengono d'occhio. Scade quello del sito ereditato da un'altra agenzia, di un sottodominio che nessuno aveva segnato, durante un weekend. E troppo spesso il cliente se ne accorge prima dell'agenzia.
Cosa vedono visitatori e crawler
In Chrome la pagina mostra "La connessione non è privata" con il codice di errore NET::ERR_CERT_DATE_INVALID. Firefox mostra "Attenzione: potenziale rischio per la sicurezza" con SEC_ERROR_EXPIRED_CERTIFICATE. Quasi tutti se ne vanno. Se il sito invia un header Strict-Transport-Security (HSTS), il browser non offre nemmeno la possibilità di proseguire, e per chi ci era già stato il sito diventa semplicemente irraggiungibile.
Gli analytics vanno a zero, perché la pagina non si carica e lo script di tracciamento non parte. I form di pagamento e di contatto non funzionano. Le chiamate server-to-server, come i webhook di un provider di pagamento, rifiutano il certificato e di solito registrano l'errore in un log che nessuno guarda. Googlebot riceve errori di recupero e, se il problema dura giorni anziché ore, la scansione rallenta e le pagine possono uscire dall'indice.
Perché i certificati scadono anche con il rinnovo automatico
I certificati Let's Encrypt durano 90 giorni e il rinnovo è di norma un'attività pianificata gestita da Certbot o dal pannello dell'hosting. Fallisce in pochi modi prevedibili.
Si rompe l'attività stessa. Un aggiornamento di pacchetti, un ambiente Python cambiato o un disco pieno fanno uscire certbot renew con un errore che finisce in /var/log/letsencrypt/ e da nessun'altra parte. In più nel 2025 Let's Encrypt ha smesso di inviare le email di promemoria sulla scadenza, quindi l'avviso su cui molti contavano non arriva più.
La validazione smette di passare. La challenge HTTP-01 richiede che /.well-known/acme-challenge/ sia raggiungibile sulla porta 80, e una nuova regola di redirect, un WAF o una modifica al firewall possono bloccarla. Con la DNS-01, spostare il DNS su un altro provider invalida le credenziali API usate per il rinnovo.
Il certificato viene rinnovato ma mai caricato. Nginx e Apache continuano a servire il certificato caricato all'avvio finché non vengono ricaricati. Certbot lo gestisce con un deploy hook come --deploy-hook "systemctl reload nginx"; se quell'hook non è mai stato impostato, il file su disco è nuovo mentre i visitatori ricevono quello scaduto.
Edge e origin non coincidono. Quando è Cloudflare o un load balancer a terminare il TLS, ci sono due certificati con due scadenze diverse. Quello che vedono i visitatori sta sull'edge, ma un certificato scaduto sull'origin interrompe la connessione a valle quando è attiva la modalità Full (strict).
I sottodomini vengono dimenticati. Un certificato per example.com e www.example.com non copre shop.example.com o staging.example.com, che possono avere ciascuno il proprio certificato e il proprio rinnovo.
Con certbot renew --dry-run puoi provare il processo di rinnovo senza sostituire nulla.
Controllare la scadenza del certificato SSL a mano
Nel browser, fai clic sull'icona a sinistra della barra degli indirizzi, apri i dettagli del certificato e leggi la data di scadenza ("Valido fino al" o simile).
Da riga di comando:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -issuer
Il comando stampa notBefore, notAfter e l'emittente. Includi sempre -servername: senza, un server che ospita più siti sullo stesso IP può restituire il certificato predefinito invece di quello del tuo hostname.
Già che ci sei, controlla altre due cose. L'emittente dovrebbe essere quello che ti aspetti, perché un cambio spesso significa che hosting o CDN sono stati riconfigurati. E la catena deve essere completa: un certificato intermedio mancante o un hostname non presente nei Subject Alternative Names del certificato producono lo stesso avviso del browser di una scadenza, anche con mesi di validità residua.
Per un sito ci vuole un minuto. Su trenta clienti, con i loro sottodomini e qualche ambiente di staging, diventa un lavoro che salta nelle settimane piene. La checklist di monitoraggio per agenzie raccoglie gli altri controlli ricorrenti che fanno la stessa fine.
Il monitoraggio SSL in Deltio
Deltio controlla il certificato di ogni sito che aggiungi, mostra in dashboard i giorni rimanenti e l'emittente, e ti avvisa su Slack ed email prima della scadenza e quando un certificato non è valido. Nello stesso posto controlla la scadenza del dominio, che conta perché un dominio scaduto si porta via insieme certificato, sito ed email. Uptime, robots.txt e modifiche alla sitemap girano sullo stesso account, quindi l'SSL diventa una voce di un quadro più ampio di ogni sito cliente invece di uno strumento a parte, come descritto in come monitorare i siti dei clienti. Un certificato scaduto equivale di fatto a un downtime, ed è anche per questo che compare nel confronto sull'alternativa a UptimeRobot.
Domande frequenti
- Con quanto anticipo dovrei essere avvisato di un certificato in scadenza?
- Trenta giorni sono un margine comodo per i certificati rinnovati a mano o tramite il reparto IT del cliente, perché lasciano il tempo per un ticket e un'approvazione. Per i certificati Let's Encrypt rinnovati in automatico, un avviso nelle ultime settimane di solito significa che il rinnovo automatico è già fallito, dato che Certbot rinnova quando mancano circa 30 giorni.
- Un certificato SSL scaduto danneggia la SEO in modo permanente?
- Un'interruzione breve risolta in poche ore in genere non lascia effetti duraturi. Il rischio cresce con la durata: dopo diversi giorni di recuperi falliti Google riduce la scansione e può escludere URL, che poi vanno riscansionati quando il sito torna online.
- Un certificato può essere non valido prima di scadere?
- Sì. Un hostname assente dai Subject Alternative Names, una catena incompleta o un certificato revocato dall'emittente fanno comparire l'avviso del browser anche se la data di scadenza è ancora lontana.
- Anche i certificati a pagamento vanno monitorati?
- Sì, forse anche di più. I certificati a pagamento durano in genere un anno e si rinnovano a mano, spesso da parte di una persona del cliente che nel frattempo ha cambiato lavoro, quindi non c'è nessuna attività automatica su cui contare.
- Quanto costa Deltio?
- Starter costa 29 € al mese, oppure 24 € al mese con fatturazione annuale, per un massimo di 50 siti. Professional costa 59 € al mese (49 € con fatturazione annuale) per un massimo di 200 siti ed Enterprise 139 € al mese (116 € con fatturazione annuale) per un massimo di 500. Ogni piano include una prova gratuita di 14 giorni.