Certificato SSL gratuito con Let's Encrypt e Certbot
Certificato SSL gratuito per il tuo server Linux: come installare Certbot su Debian e Ubuntu, rilasciare un certificato Let's Encrypt per Apache e farlo rinnovare in automatico.
Un certificato SSL di Let's Encrypt non costa nulla, si configura in pochi minuti ed è accettato da tutti i browser più diffusi. In questa guida attivi HTTPS su un tuo server Linux con Apache: su Debian 13, Debian 12, Ubuntu 24.04 LTS e Ubuntu 22.04 LTS.
Il rilascio del certificato è affidato a Certbot, il client ACME ufficiale della Electronic Frontier Foundation. Certbot richiede il certificato, lo inserisce nella configurazione di Apache e poi lo rinnova da solo tramite un timer systemd.
Prerequisiti
- Un dominio il cui record A (e con IPv6 anche il record AAAA) punta al tuo VPS o al tuo server root.
- Un server web Apache2 in esecuzione, con un VirtualHost per questo dominio.
- Accesso root via SSH.
- La porta 80 e la porta 443 devono essere raggiungibili dall'esterno. Let's Encrypt verifica il dominio attraverso la porta 80.
Controlla prima di tutto che il dominio punti davvero al tuo server. Inserisci il tuo dominio su https://check-host.net/. Se compare l'indirizzo IP del tuo server, puoi proseguire. Se il DNS punta ancora a una destinazione vecchia, aspetta che l'aggiornamento si propaghi, altrimenti il rilascio fallisce.
Aggiornare il sistema
Porta prima di tutto l'elenco dei pacchetti e i pacchetti installati all'ultima versione disponibile:
apt update && apt upgrade -y
Installare Certbot
Le strade abituali sono due. Il pacchetto della distribuzione è la più semplice ed è più che sufficiente per la maggior parte dei server. Il pacchetto Snap fornisce sempre la versione più recente di Certbot ed è quello consigliato ufficialmente dalla Electronic Frontier Foundation.
Variante 1: Certbot dal repository della distribuzione
Su Debian e Ubuntu, Certbot e il plugin per Apache si trovano direttamente nelle sorgenti dei pacchetti:
apt install certbot python3-certbot-apache -y
Il pacchetto "python-certbot-apache", un tempo molto diffuso, apparteneva a Python 2 e non esiste più. Su tutte le versioni attuali di Debian e Ubuntu il nome di pacchetto corretto è "python3-certbot-apache".
Variante 2: installare Certbot tramite snap
Se vuoi avere sempre la versione più recente di Certbot, per esempio per i plugin DNS o per i certificati wildcard, installa Certbot come Snap. Rimuovi prima un'eventuale installazione da pacchetto, così le due non entrano in conflitto:
apt remove certbot -y
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Rilasciare il certificato e integrarlo in Apache
La strada più rapida è il plugin per Apache. Certbot legge i VirtualHost esistenti, richiede il certificato e scrive da solo la configurazione SSL adatta:
certbot --apache -d IlMioDominio.it -d www.IlMioDominio.it
Se preferisci mantenere il controllo sulla configurazione di Apache, puoi far passare la verifica del dominio dalla directory webroot. In questo caso indica esattamente la directory che il VirtualHost usa come DocumentRoot:
certbot --authenticator webroot --installer apache -w /var/www/IlMioDominio.it -d IlMioDominio.it -d www.IlMioDominio.it
Se il tuo sito si trova nella directory predefinita, il comando è questo:
certbot --authenticator webroot --installer apache -w /var/www/html/ -d IlMioDominio.it -d www.IlMioDominio.it
Le domande di Certbot
Al primo avvio Certbot pone alcune domande:
- Indirizzo e-mail: indica un indirizzo che leggi davvero. È lì che Let's Encrypt manda l'avviso quando un rinnovo non va a buon fine.
- Condizioni di utilizzo: con "A" le accetti.
- Newsletter della Electronic Frontier Foundation: "Y" per sì, "N" per no. È facoltativa e non ha alcun effetto sul certificato.
- Reindirizzamento su HTTPS: scegli l'opzione "Redirect", così Apache inoltra automaticamente tutte le chiamate HTTP su HTTPS.
Subito dopo Certbot mostra il percorso del certificato. I file si trovano in /etc/letsencrypt/live/IlMioDominio.it/. Non modificare questi file a mano, vengono riscritti a ogni rinnovo.
Verificare il rinnovo automatico
Un certificato di Let's Encrypt è valido 90 giorni. Certbot lo rinnova automaticamente non appena restano meno di 30 giorni di validità. Per questo il pacchetto porta con sé un timer systemd. Verifica che sia attivo:
systemctl list-timers certbot.timer
Se il timer non è attivo, abilitalo:
systemctl enable --now certbot.timer
Poi prova la procedura a vuoto. In questo modo non viene rilasciato nulla, Certbot si limita a simulare il rinnovo:
certbot renew --dry-run
Perché Apache usi davvero il nuovo certificato dopo un rinnovo, imposta una volta sola un deploy-hook:
certbot renew --deploy-hook "systemctl reload apache2"
Visualizzare e rimuovere i certificati
Una panoramica di tutti i certificati gestiti sul server si ottiene così:
certbot certificates
Un certificato che non ti serve più lo rimuovi in questo modo, così Certbot non prova più a rinnovarlo:
certbot delete --cert-name IlMioDominio.it
Errori frequenti
- "Could not bind to port 80": un altro servizio occupa la porta 80. Fermalo oppure usa il metodo webroot, che sfrutta l'Apache già in esecuzione.
- "Invalid response from http://.../.well-known/acme-challenge/...": il dominio non punta a questo server, un firewall blocca la porta 80, oppure la directory webroot indicata non corrisponde al VirtualHost.
- "The requested apache plugin does not appear to be installed": manca il pacchetto "python3-certbot-apache".
- "too many certificates already issued": hai raggiunto un limite di Let's Encrypt. D'ora in poi prova le configurazioni con
--dry-runprima di richiedere un certificato vero. - Il browser mostra ancora un avviso: svuota la cache del browser e controlla che Apache sia stato ricaricato dopo il rilascio.
Reindirizzare HTTP su HTTPS in modo permanente
Se durante le domande di Certbot non hai attivato il reindirizzamento, puoi aggiungerlo in qualsiasi momento. Come farlo tramite un file .htaccess lo spieghiamo in un articolo dedicato al reindirizzamento da HTTP a HTTPS.
Domande frequenti
Quanto costa un certificato SSL di Let's Encrypt?
Quanto dura un certificato Let's Encrypt?
Devo rinnovare il certificato a mano?
Let's Encrypt funziona anche per i sottodomini?
Perché la verifica del dominio fallisce?
2023-2026 KernelHost GmbH. Tutti i diritti riservati. Questa guida è protetta dal diritto d'autore. La ripubblicazione su altri siti web, anche parziale o in forma modificata, non è consentita senza il nostro consenso scritto. Le citazioni con indicazione della fonte e un link sono le benvenute.

