Certificato scaduto: rinnovo urgente

Cosa succede quando un certificato scade

Un certificato SSL/TLS scaduto fa apparire al browser l'errore NET::ERR_CERT_DATE_INVALID o SEC_ERROR_EXPIRED_CERTIFICATE. La pagina non si apre, gli utenti vedono un'avviso rosso a tutto schermo e devono cliccare su Avanzate > Procedi per ignorare l'errore (cosa che la maggior parte non fa). Per un sito di produzione, ogni minuto di certificato scaduto è perdita di traffico, fiducia e conversioni.

Effetti collaterali oltre al browser

  • API REST consumate da app mobile o server-to-server smettono di funzionare
  • Cron job che chiamano webhook restituiscono errori SSL
  • Webhook in entrata da provider esterni (Stripe, PayPal, Mailchimp) vanno in failure retry
  • Webmail e client di posta perdono connessione
  • VPN basate su TLS rifiutano l'autenticazione
  • Notifiche push iOS/Android possono interrompersi

Verifica rapida

Per confermare che il problema sia effettivamente la scadenza:

echo | openssl s_client -connect tuosito.it:443 2>/dev/null | openssl x509 -noout -dates

Output tipico: notBefore=... e notAfter=.... Se notAfter è nel passato, è scaduto. Anche un browser desktop mostra la data nei dettagli del certificato (lucchetto > Cert details).

Procedura di rinnovo urgente — Let's Encrypt

Se usi Let's Encrypt e il cronjob di rinnovo automatico è saltato:

  1. SSH al server
  2. certbot renew --force-renewal
  3. Se fallisce, certbot certonly --force-renewal -d tuodominio.it -d www.tuodominio.it
  4. Verifica i nuovi file in /etc/letsencrypt/live/tuodominio.it/
  5. Ricarica il web server: nginx -s reload o systemctl reload apache2

Tempo tipico: 2-5 minuti se il dominio è già validato; più lungo solo se ci sono problemi DNS o di webroot.

Procedura di rinnovo urgente — CA commerciale

Con CA come DigiCert, Sectigo, GlobalSign:

  1. Genera una nuova CSR sul server (o riusa quella esistente)
  2. Accedi al pannello cliente della CA
  3. Avvia un renewal dal certificato scaduto
  4. Carica la CSR e seleziona il metodo di validazione (DNS, file, email)
  5. Per certificati DV la validazione richiede 5-30 minuti
  6. Scarica il certificato firmato + chain intermedia
  7. Installa sul server e ricarica

Tempo realistico: 30-90 minuti per DV, ore per OV, giorni per EV. Per emergenze EV alcune CA offrono rush issuance a pagamento.

Soluzione tampone: certificato emergenza

Se la CA commerciale non emette in tempo, puoi attivare temporaneamente un Let's Encrypt sull'apex e sui sottodomini critici, in attesa che la CA rilasci il cert'ufficiale. È un workaround comune per evitare downtime prolungato.

Diagnosi cause root

Una volta ripristinato il servizio, capisci perché è successo:

  • Cron di rinnovo automatico fermo o malfunzionante
  • Quote rate-limit di Let's Encrypt superate
  • Cambio DNS che ha rotto la validazione
  • Notifiche email del CA finite in spam
  • Cambio referente tecnico, nessuno ha ricevuto l'alert
  • Configurazione del web server che non viene reloadata dopo il rinnovo

Prevenzione futura

  1. Configura monitoring esterno (UptimeRobot, Pingdom, StatusCake) che controlla la scadenza ogni giorno e manda alert a 30, 14, 7, 3, 1 giorni dalla scadenza
  2. Centralizza la gestione dei certificati su un solo team con responsabilità chiare
  3. Automatizza con Certbot, acme.sh o un controller Kubernetes (cert-manager)
  4. Tieni un certificate inventory in un foglio o tool dedicato
  5. Verifica trimestralmente che gli alert email arrivino al referente attuale

Strumenti di monitoraggio

  • certbot-renew.timer integrato nel pacchetto Debian/Ubuntu
  • acme.sh con notify-hook personalizzato
  • SSL Labs Server Test manuale
  • checkssl CLI con soglia di alert
  • Nagios/Zabbix plugin check_ssl_cert

Hai bisogno di aiuto?

Se vuoi gestione SSL dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?