Tutorial passo passo su come utilizzare il certificato Let's Encrypt per ottenere un certificato SSL gratuito e su come rinnovarlo automaticamente.
Soprattutto Let's Encrypt è open-source ed è completamente gratuito. Consente a chiunque di installare un certificato SSL affidabile sul proprio sito Web e di beneficiare della maggiore sicurezza fornita da una connessione crittografata. A differenza di un certificato SSL autofirmato, un certificato Let's Encrypt viene riconosciuto come completamente verificato e mostra l'icona del lucchetto nella barra degli indirizzi dei browser Web moderni.
Come funziona Let's Encrypt
Prima di emettere un certificato, Let's Encrypt convalida la proprietà del tuo dominio. Il client Let's Encrypt, in esecuzione sul tuo host, crea un file temporaneo (un token) contenente le informazioni richieste. Il server di convalida effettua quindi una richiesta HTTP per recuperare il file e convalida il token, verificando che il record DNS per il tuo dominio venga risolto nel server che esegue il client Let's Encrypt. Pertanto i comandi riportati di seguito devono essere eseguiti sul server che servirà il tuo dominio per il quale stai emettendo il certificato.
1. Installazione di certbot
Let's Encrypt ha un programma di installazione automatico chiamato certbot
. Il primo passo per utilizzare Let's Encrypt per ottenere un certificato SSL è installarlo sul tuo server.
Ubuntu:
sudo apt install certbot python3-certbot-nginx
Debian:
sudo apt install certbot
CentOS:
sudo yum install epel-release
sudo yum install certbot-nginx
2. Ottenere i certificati Let's Encrypt
Importante! Prima di emettere un certificato SSL gratuito Let's Encrypt, devi interrompere il servizio del server web. In caso contrario, riceverai il seguente errore:
Problem binding to port 80: Could not bind to IPv4 or IPv6
Se usi Nginx, esegui:
sudo systemctl stop nginx
Ora possiamo passare alla generazione del certificato SSL gratuito Let's Encrypt:
sudo certbot certonly --standalone --preferred-challenges http -d my-domain.com
-d l'opzione accetta un nome di dominio. Puoi usare più -d
opzioni nel singolo comando. Ad esempio:
sudo certbot certonly --standalone --preferred-challenges http -d my-domain.com -d www.my-domain.com
Se è la prima volta che esegui certbot
, ti verrà richiesto di inserire un indirizzo email e di accettare i termini del servizio. Dopo averlo fatto, certbot
comunicherà con il server Let's Encrypt, quindi eseguirà una sfida per verificare che tu controlli il dominio per il quale stai richiedendo un certificato.
Se ha esito positivo, certbot
si concluderà con un messaggio che ti informa che il processo è andato a buon fine e dove sono archiviati i tuoi certificati.
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/my-domain.com/fullchain.pem. Your cert will
expire on 2022-08-08. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again with the
"certonly" option. To non-interactively renew all of your
certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
3. Verifica certificati
Elenca i tuoi certificati salvati in /etc/letsencrypt/live/my-domain.com
directory.
ls -l /etc/letsencrypt/live/my-domain.com/
total 4
-rw-r--r-- 1 root root 692 Mar 10 08:24 README
lrwxrwxrwx 1 root root 37 Mar 10 08:24 cert.pem -> ../../archive/my-domain.com/cert1.pem
lrwxrwxrwx 1 root root 38 Mar 10 08:24 chain.pem -> ../../archive/my-domain.com/chain1.pem
lrwxrwxrwx 1 root root 42 Mar 10 08:24 fullchain.pem -> ../../archive/my-domain.com/fullchain1.pem
lrwxrwxrwx 1 root root 40 Mar 10 08:24 privkey.pem -> ../../archive/my-domain.com/privkey1.pem
4. Modifica la configurazione del server Web
Affinché il tuo server web possa utilizzare il certificato SSL gratuito Let's Encrypt, devi specificarlo nella sua configurazione. Ad esempio, se utilizzi Nginx, devi aggiungere il seguente blocco al file di configurazione del tuo dominio /etc/nginx/sites-enabled/my-domain.conf
server {
listen 443;
server_name my-domain.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/my-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-domain.com/privkey.pem;
}
Questo è tutto. Tutte le cose sono impostate e fatte. Ora devi solo avviare il tuo server web:
sudo systemctl start nginx
Infine, puoi verificare che il tuo sito Web sia ora protetto da SSL. Basta aprire il sito web nel browser e verificare se l'icona del lucchetto è disponibile.
5. Rinnova automaticamente i certificati Let's Encrypt
I certificati hanno una validità di 90 giorni. Possono essere rinnovati 30 giorni prima della scadenza. Qui aggiungiamo un cron job che li rinnoverà automaticamente.
Quindi prima apri il file crontab:
sudo crontab -e
dopodiché aggiungi il certbot
comando da eseguire settimanalmente:
@weekly certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" --renew-hook "systemctl reload nginx" --quiet
Conclusione
In questo tutorial, abbiamo visto come installare un certificato SSL gratuito da Let's Encrypt per proteggere un sito web. Inoltre, puoi controllare il sito Web ufficiale Let's Encrypt per ulteriori informazioni e dettagli.