Vai al contenuto principale

Server Dedicato: 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 clic 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/i tuoi dominio/i. Let's Encrypt e Certbot offrono diverse sfide ACME per verificare la proprietà del dominio.

Consigliamo caldamente 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, che spiega come usare i plugin Certbot per un’installazione “one-click” e per richiedere certificati senza dover spegnere il web server.

Sfida HTTP-01

Ora che Certbot è installato, puoi richiedere i certificati per il tuo/i tuoi dominio/i. In questo esempio useremo la modalità standalone, cioè Certbot avvierà un web server temporaneo per eseguire le operazioni necessarie. 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 la sfida HTTP-01 può essere completata (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

Dopo aver lanciato il comando, potrebbe partire una configurazione interattiva iniziale che ti chiederà un indirizzo email per comunicazioni sul certificato, una mailing list opzionale e l’accettazione dei 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 bene, i certificati saranno 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 a verificare il dominio con 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 tua per gestirlo. Perciò consigliamo sempre 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_email]

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

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

Dopo aver lanciato il comando, partirà una configurazione interattiva iniziale che ti chiederà un indirizzo email per comunicazioni sul certificato, una mailing list opzionale e l’accettazione dei termini e condizioni.

Certbot ti darà 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 saranno creati e salvati in /etc/letsencrypt/live/[tuo_dominio].

note

Abbi pazienza perché la propagazione dei record DNS può richiedere un po’ di tempo. Di solito avviene in pochi minuti, ma in rari casi può durare più a lungo.

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 di configurazione del server. Per usare un plugin, basta aggiungere il parametro giusto al comando certbot.

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

I server di Let's Encrypt proveranno a recuperare la sfida dal tuo server e, se va tutto bene, il certificato sarà generato e la configurazione del server sarà 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, tipo certbot certonly.

Rinnovo Automatico

Di solito 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 tua per gestirlo. Perciò consigliamo sempre 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 di mattina 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/i tuoi dominio/i usando vari metodi come 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! 🙂