Gestione dei certificati e configurazione dell'aggiornamento automatico
1. Verifica dei certificati attuali
Comando certbot certificates
Iniziamo con una cosa semplice: come sapere quali certificati sono già installati sul tuo server? Let's Encrypt offre uno strumento comodo — certbot
. Con il comando certbot certificates
puoi ottenere informazioni dettagliate sui certificati attuali.
sudo certbot certificates
Come risultato, vedrai qualcosa del genere:
Found the following certs:
Certificate Name: example.com
Domains: example.com www.example.com
Expiry Date: 2023-12-31 10:00:00+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
Qui sono indicate delle informazioni importanti:
- Nome del certificato.
- Domini coperti dal certificato.
- Data di scadenza (così puoi aggiornarlo in tempo).
- Percorso ai file del certificato e della chiave privata.
Trucchetto utile:
Se hai l'abitudine di ignorare le notifiche sulla scadenza, questo comando diventerà il tuo migliore amico. Nessuno vuole essere quel programmatore che scopre che il certificato è scaduto dagli utenti arrabbiati.
2. Aggiornamento automatico dei certificati
Sotto il cofano di Let's Encrypt
I certificati di Let's Encrypt sono validi per 90 giorni, così da minimizzare i rischi di sicurezza. Ma aggiornarli manualmente ogni 3 mesi è davvero una seccatura. Per fortuna, per automatizzare il processo si usa un comando integrato:
sudo certbot renew
Questo processo controlla tutti i certificati e aggiorna automaticamente quelli che stanno per scadere.
Configurazione dell'aggiornamento automatico tramite Cron
Cron
è uno strumento integrato in Linux per la pianificazione delle attività. Esegue comandi secondo un programma definito, ed è esattamente ciò di cui abbiamo bisogno per automatizzare l'aggiornamento dei certificati. Ecco come configurare Cron per l'aggiornamento:
Apri l'editor di
Cron
per l'utente corrente:sudo crontab -e
Aggiungi la seguente riga alla fine del file:
0 0 * * * certbot renew --quiet
Questo comando esegue
certbot renew
ogni giorno a mezzanotte. Il flag--quiet
sopprime l'output inutile, così l'aggiornamento avviene in silenzio senza disturbare nessuno.Salva le modifiche ed esci dall'editor.
Ora il tuo server aggiornerà automaticamente i certificati, e non dovrai più preoccuparti della loro scadenza (o quasi).
3. Aggiornamento manuale dei certificati
A volte l'automazione non risolve tutti i problemi e bisogna aggiornare i certificati manualmente. Ad esempio, se hai appena aggiunto un nuovo dominio alla configurazione del sito, devi richiedere manualmente un nuovo certificato. Ecco che torna utile certbot
:
Esempio di comando:
sudo certbot renew
Aggiornamento del certificato per un dominio specifico
Se hai bisogno di aggiornare un certificato associato a un dominio specifico, usa il seguente formato di richiesta:
sudo certbot certonly --nginx -d example.com -d www.example.com
Qui:
--nginx
indica che la configurazione sarà applicata automaticamente al server Nginx. Per Apache si usa--apache
.- I flag
-d
elencano i domini per i quali è necessario emettere un certificato.
Dopo aver eseguito il comando, Certbot controllerà la configurazione del server, richiederà un nuovo certificato e lo configurerà.
4. Notifiche e monitoraggio
Notifiche email
Quando installi Certbot, ti verrà chiesto il tuo indirizzo email. Se l'hai fornito, riceverai notifiche 20 giorni prima della scadenza del certificato. Se per caso non hai indicato un'email o vuoi cambiarla, puoi farlo così:
sudo certbot register --update-registration --email newaddress@example.com
Ora nessuna situazione ti coglierà alla sprovvista. Beh, quasi.
Controllo esterno
Ci sono servizi di terze parti che ti possono aiutare a monitorare la scadenza dei certificati. Ad esempio, SSL Labs. Basta inserire l'indirizzo del sito, e il servizio controllerà il certificato, inclusa la data di scadenza, la catena di fiducia e il livello di sicurezza.
5. Eliminazione dei certificati inutili
A volte i vecchi certificati diventano inutili, ad esempio, se smetti di gestire un certo dominio. Per non riempire inutilmente il sistema, è meglio eliminarli.
Comando per eliminare:
sudo certbot delete
Certbot mostrerà una lista di certificati disponibili e ti chiederà di scegliere quale eliminare.
Consiglio utile:
Fai attenzione quando elimini i certificati, così da non disattivare accidentalmente un sito funzionante. Controlla sempre che il certificato non venga più utilizzato da nessuna parte.
6. Esempi e debug degli errori
Verifica dopo l'aggiornamento
Dopo qualsiasi modifica o aggiornamento dei certificati, verifica sempre che il sito funzioni correttamente. Il modo più semplice per farlo è usare curl
:
curl -I https://example.com
Risultato atteso — codice HTTP/1.1 200 OK
.
Se qualcosa non va, controlla prima di tutto i log:
Per Nginx:
sudo tail -f /var/log/nginx/error.log
Per Apache:
sudo tail -f /var/log/apache2/error.log
Errore comune: "Too Many Requests"
Se richiedi troppo spesso nuovi certificati, Let's Encrypt potrebbe bloccarti con l'errore "Too Many Requests". In questi casi, si consiglia di utilizzare il server di test di Let's Encrypt:
sudo certbot certonly --test-cert --nginx -d example.com
Questo comando genera un certificato di test, non valido per l'uso reale, ma utile per verificare la configurazione.
7. Passaggio finale: riavvio automatico del server web
Let's Encrypt aggiorna i file dei certificati, ma i server web come Nginx o Apache non notano i cambiamenti fino a quando non li riavvii. Anche questo si può automatizzare. Aggiorna il record di Cron:
0 0 * * * certbot renew --quiet && systemctl reload nginx
Oppure per Apache:
0 0 * * * certbot renew --quiet && systemctl reload apache2
Ora, dopo un aggiornamento, qualsiasi certificato verrà applicato immediatamente al server.
Questa lezione è pensata per farti dormire sonni tranquilli, sapendo che i tuoi certificati si rinnovano automaticamente, i siti sono protetti e non riceverai una chiamata dal capo alle tre di notte con le parole "Gli utenti si lamentano che il sito non è accessibile". La gestione dei certificati è una competenza importante, utile nel lavoro reale, specialmente se hai intenzione di occuparti del deployment di grandi applicazioni web o dell'ingegneria DevOps.
GO TO FULL VERSION