Vai al contenuto principale

VPS: Crea certificato SSL (Let's Encrypt) per server Linux

Questa guida è stata creata con i seguenti prodotti:

(I dettagli possono variare con prodotti di fornitori diversi ma i concetti principali rimangono gli stessi)

Introduzione

I certificati SSL sono fondamentali su internet, garantendo che i dati vengano trasmessi in sicurezza tra client e host. In questa guida vedremo come configurare lo strumento open-source Certbot per richiedere certificati SSL gratuiti dall'autorità di certificazione no-profit Let's Encrypt.

Preparazione

Per usare Certbot ti serve un server Linux e un Dominio di tua proprietà. Devi avere accesso alle impostazioni DNS del dominio e devi creare un record DNS A che punti all'indirizzo IP del tuo server Linux per ogni dominio principale o sottodominio che vuoi usare.

Certbot offre anche plugin aggiuntivi che ti permettono di configurare il certificato con un click per vari web server come Nginx o Apache. Ti consigliamo Nginx, un web server open-source molto performante e popolare. Dai un’occhiata alla nostra guida Linux reverse proxy per configurarlo.

Installazione

Inizia installando il pacchetto open-source Certbot, che userai per richiedere certificati SSL gratuiti da Let's Encrypt.

sudo apt install certbot

Ora che Certbot è installato, puoi procedere a richiedere i certificati per il tuo dominio o domini. Let's Encrypt e Certbot offrono diverse sfide ACME per verificare la proprietà del dominio.

Ti consigliamo di usare il metodo predefinito HTTP-01 perché permette il rinnovo automatico. Se però hai problemi, puoi provare il metodo DNS-01 come alternativa, che è manuale e non supporta il rinnovo automatico perché si basa sulla verifica tramite record DNS TXT.

Usa i plugin per web server

Se usi un web server come Nginx, Apache o un tuo server personalizzato, ti consigliamo di passare alla sezione Web Server Plugins qui sotto, dove ti mostriamo come usare i plugin Certbot per un’installazione “one-click” e per richiedere certificati senza dover spegnere il web server.

Sfida HTTP-01

Con Certbot installato, puoi richiedere i certificati per il tuo dominio o domini. In questo esempio useremo la modalità standalone, cioè Certbot avvierà un web server temporaneo per completare la verifica. Questo significa che devi aprire la porta 80 nelle regole firewall e non avere altri web server o servizi attivi sulla porta 80, così il server temporaneo può partire e permettere la verifica (da qui il nome HTTP nella sfida).

Nel comando qui sotto userai il parametro --standalone per dire a Certbot di usare il server temporaneo.

# Per domini principali
certbot certonly --standalone -d [tuo_dominio_principale] -d www.[tuo_dominio_principale]

# Per sottodomini
certbot certonly --standalone -d [tuo_sottodominio]

# Setup interattivo
certbot certonly --standalone

Quando esegui il comando, potresti dover completare una configurazione interattiva iniziale dove inserirai un indirizzo email per comunicazioni sul certificato, una mailing list opzionale e accetterai termini e condizioni.

Certbot genererà una sfida ACME e la ospiterà tramite il web server temporaneo. I server di Let's Encrypt proveranno a recuperarla dal tuo server e, se tutto va a buon fine, i certificati verranno creati e salvati in /etc/letsencrypt/live/[tuo_dominio].

Ora puoi usare i certificati SSL dove ti serve, semplicemente indicando il percorso locale ai certificati.

Record DNS TXT

Se hai problemi con la verifica tramite il metodo HTTP-01, puoi provare il metodo DNS-01 che richiede di creare un record DNS TXT con un valore fornito da Let's Encrypt.

Come detto, questo metodo non supporta il rinnovo automatico a meno che tu non configuri un’infrastruttura dedicata. Perciò ti consigliamo di usare il metodo HTTP-01 quando possibile.

Nel comando qui sotto userai il parametro --preferred-challenges per dire a Certbot di usare il metodo DNS-01.

# Per domini principali
certbot certonly --preferred-challenges dns-01 -d [tuo_dominio_principale] -d www.[tuo_dominio_principale] --manual -m [tuo_dominio_principale] -m www.[tuo_dominio_principale]

# Per sottodomini
certbot certonly --preferred-challenges dns-01 -d [tuo_sottodominio] --manual -m [tuo_sottodominio]

# Setup interattivo
certbot certonly --preferred-challenges dns-01

Dopo aver lanciato il comando, dovrai completare la configurazione interattiva iniziale inserendo un indirizzo email per comunicazioni sul certificato, una mailing list opzionale e accettare termini e condizioni.

Certbot ti darà le istruzioni per creare un record DNS TXT con un valore specifico. Il nome del record sarà tipicamente _acme-challenge. seguito dal tuo dominio (es. _acme-challenge.zapdocs.example.com) e il valore da inserire sarà mostrato in console.

Dopo aver creato il record, premi invio per continuare. Se tutto è corretto e propagato, i certificati verranno creati e salvati in /etc/letsencrypt/live/[tuo_dominio].

note

Abbi pazienza perché le modifiche DNS possono impiegare un po’ a propagarsi. Di solito avviene in pochi minuti, ma in rari casi può richiedere più tempo.

Ora puoi usare i certificati SSL dove ti serve, semplicemente indicando il percorso locale ai certificati.

Plugin per Web Server

Certbot ha diversi plugin per web server che rendono ancora più semplice gestire i certificati, perché modificano automaticamente i blocchi server necessari. Per usarli basta aggiungere il parametro giusto al comando certbot.

Entrambi i metodi usano la sfida HTTP-01 e funzionano praticamente allo stesso modo. Quando usi un plugin, Certbot cerca il blocco server che contiene il dominio richiesto come parametro server_name. Una volta trovato, genera una sfida ACME e aggiunge un blocco temporaneo location /.well-known/acme-challenge/... nella configurazione del server.

I server di Let's Encrypt proveranno a recuperare la sfida dal tuo server e, se va tutto bene, il certificato viene generato e la configurazione del server viene aggiornata automaticamente per usare HTTPS (porta 443) e i nuovi certificati.

Plugin Nginx

Prima di usare il plugin, assicurati che sia installato.

sudo apt install python3-certbot-nginx

Per usare il plugin Nginx, aggiungi il parametro --nginx al comando come segue.

# Per domini principali
certbot --nginx -d [tuo_dominio_principale] -d www.[tuo_dominio_principale]

# Per sottodomini
certbot --nginx -d [tuo_sottodominio]

# Setup interattivo
certbot --nginx
suggerimento

Se vuoi disabilitare le modifiche automatiche “one-click” ai blocchi server da parte di Certbot, puoi aggiungere il parametro certonly al comando, ad esempio certbot certonly.

Rinnovo Automatico

In genere Certbot configura automaticamente il rinnovo dei certificati tramite cronjob e/o timer systemd. Puoi verificarlo con questo comando di test usando --dry-run:

certbot renew --dry-run
suggerimento

Come detto, il metodo DNS-01 non supporta il rinnovo automatico tramite Certbot, a meno che tu non configuri un’infrastruttura dedicata. Perciò ti consigliamo di usare il metodo HTTP-01.

Se tutto è a posto, il test sarà positivo. Se vuoi vedere o modificare il rinnovo automatico, i comandi si trovano in /etc/crontab/, /etc/cron.*/* o tramite systemctl list-timers.

Configurazione manuale cronjob

Se per qualche motivo il rinnovo automatico non è configurato, puoi aggiungerlo tu con un cronjob. Apri il crontab con crontab -e. Se è la prima volta, ti chiederà di scegliere un editor: scegli la prima opzione, che dovrebbe essere /bin/nano.

Con il file aperto in nano, aggiungi questa riga per far partire il rinnovo ogni giorno alle 6 del mattino ora locale:

0 6 * * * certbot renew

Salva e chiudi nano con CTRL + X, poi Y per confermare e infine ENTER.

Conclusione

Hai configurato con successo Certbot per il tuo dominio o domini con vari metodi, standalone, webroot o plugin, garantendo al tuo sito una trasmissione dati sicura via HTTPS. Per domande o supporto, il nostro team è sempre disponibile per aiutarti! 🙂