I certificati HTTPS erogati da Let's Encrypt sono validi solamente per 90 giorni, trascorsi i quali è necessario svolgere la procedura di rinnovo: non solo è indispensabile richiedere un nuovo certificato, ma anche ricaricare la configurazione del server web, di modo che il certificato aggiornato venga effettivamente utilizzato. In questa guida vedremo come configurare tutto al meglio affinché il certificato HTTPS di Let's Encrypt si rinnovi automaticamente, per poi ricaricare la configurazione di Nginx o Apache HTTP Server

Let's Encrypt Nginx Apache: come rinnovare automaticamente certificato HTTPS ricaricare server web dopo rinnovo - let's encrypt rinnovo restart nginx spotlight

Questo articolo è incentrato sulla procedura per rinnovare i certificati di Let's Encrypt e utilizzarli subito nel server web, automaticamente. Per la guida generale finalizzata ad ottenere un certificato HTTPS gratuito, consultare quest'altro approfondimento dedicato:

» Leggi: Come ottenere un certificato HTTPS (SSL/TLS) gratis: la Grande Guida a Let's Encrypt

Rinnovare automaticamente i certificati di Let's Encrypt

Come abbiamo visto nella guida generale a Let's Encrypt, i certificati HTTPS si rinnovano manualmente impartendo sudo certbot renew

Let's Encrypt Nginx Apache: come rinnovare automaticamente certificato HTTPS ricaricare server web dopo rinnovo

Il pacchetto di installazione per le principali distribuzioni Linux (fra le quali Ubuntu) crea però anche un timer che lo fa automaticamente. Per assicurarsi che detto timer sia attivo, basta impartire

systemctl list-timers --all | grep certbot

Se il risultato ha un aspetto simile al seguente, il timer è installato correttamente

Let's Encrypt Nginx Apache: come rinnovare automaticamente certificato HTTPS ricaricare server web dopo rinnovo

Si noti, in particolare, l'indicazione dell'orario: mostra il momento in cui verrà nuovamente eseguita la procedura, e quanto tempo manca.

Ricaricare automaticamente il certificato dopo il rinnovo

Di default, però, la procedura di rinnovo di certbot NON ricarica la configurazione di NGINX o Apache HTTP Server, con il risultato che il server web continua ad utilizzare il vecchio certificato anche dopo la scadenza, nonostante quello nuovo sia già pronto e disponibile

Let's Encrypt Nginx Apache: come rinnovare automaticamente certificato HTTPS ricaricare server web dopo rinnovo - https la tua connessione non è privata expired

Per evitare che questo avvenga, possiamo utilizzare il sistema di hook offerto da certbot e ricaricare la configurazione del server web dopo il rinnovo, di modo che il servizio legga il nuovo file con il certificato aggiornato.

Per raggiungere il risultato è sufficiente preparare uno script con i comandi e spostarlo nel percorso preposto: /etc/letsencrypt/renewal-hooks/deploy/.

Per svolgere questa operazione nel modo più rapido possibile, lancia il comando seguente:

sudo apt update && sudo apt install curl -y && curl -s https://raw.githubusercontent.com/TurboLabIt/webstackup/master/script/https/letsencrypt-create-hooks.sh | sudo bash

Questo esegue una procedura (visualizzabile qui) che predispone innanzitutto uno script (visualizzabile qui) nel percorso /etc/letsencrypt/renewal-hooks/deploy/. Detto script si occupa di ricaricare la configurazione del server web in seguito al rinnovo del certificato.

Subito dopo, la procedura esegue immediatamente un rinnovo puntuale dei certificati presenti sul sistema, di modo da evidenziare immediatamente eventuali problemi e consentire all'amministratore di correggerli

Let's Encrypt Nginx Apache: come rinnovare automaticamente certificato HTTPS ricaricare server web dopo rinnovo

Come si vede nello screenshot (in basso), lo script potrebbe emettere un messaggio rosso simile al seguente:

Hook 'deploy-hook' ran with error output:

Il fatto che il messaggio sia rosso e parli di "error" è fuorviante. Quelli sono infatti TUTTI i messaggi della procedura che ricarica il server web, che potrebbero essere semplici note informative (come in questo caso) oppure potrebbero essere realmente errori. È dunque necessario ispezionarli puntualmente e verificare che tutto sia in ordine.

Conclusioni

Da qui in avanti, il rinnovo del certificato HTTPS avverrà automaticamente, e la configurazione del server web verrà ricaricata subito dopo per utilizzare il nuovo file.

Qui su TruboLab.it stiamo utilizzando questa stessa configurazione da oltre 5 anni, per cui si tratta di una soluzione ben collaudata.

È comunque una buona idea attivare un servizio di monitoraggio che possa inviare una notifica in caso il certificato fosse prossimo alla scadenza. Io ora utilizzo Red Sift Certificates Lite (gratuito), ma la stessa funzionalità è integrata anche nel piano a pagamento di UptimeRobot, e nel suo clone gratuito e self-hosted, Uptime Kuma.