Panoramica
Nel seguente post tratteremo la procedura su come proteggere Nginx con Let's Encrypt SSL su macchine Debian 10 (questa procedura può essere applicata anche su Debian 11). Il post mostrerà lo scenario, in cui dobbiamo installare certbot sulla nostra macchina Debian e ottenere il certificato SSL da Let's Encrypt, impostare il reindirizzamento HTTPS automatico e testare anche il rinnovo del certificato. Qui abbiamo già una macchina Debian con Nginx preinstallato su cui seguiremo i passaggi su come proteggere nginx con Let's encrypt ssl.
Requisiti
1.. Registrato e valido un nome di dominio che punta al tuo server Debian.
2.. Server Debian 10 (o server Debian 11)
3.. Server web Nginx installato e funzionante
4.. Configurazione del firewall (porte HTTP e HTTPS aperte)
Se hai un firewall UFW o IPTABLES, devi configurarli in modo che aprano le porte 80 e 443 per HTTP e HTTPS non solo per ospitare il tuo sito web
UFW
sudo ufw allow http sudo ufw allow https
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT or sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Installazione Certbot
Utilizzeremo lo strumento Let's Encrypt Cerbot per ottenere il certificato SSL e anche il plug-in Nginx per certbot. Entrambi gli strumenti ci aiuteranno a ottenere il certificato in modo molto semplice, rapido e anche ad apportare le modifiche alla configurazione necessarie su Nginx. Inoltre, gli strumenti hanno le funzionalità di automazione, quindi alla scadenza SSL possono rinnovare e installare nuovamente il certificato.
sudo apt install certbot python3-certbot-nginx
Acquisisci il certificato SSL da Let's Encrypt
Dopo aver confermato che le porte sul firewall sono aperte e aver terminato con l'installazione di certbot. Per acquisire il certificato SSL da Let's encrypt non ci resta che eseguire a comando:
sudo certbot --nginx -d yourdomain.com
Una nota:prima di eseguire il comando, è necessario prima scrivere nel file di configurazione di nginx nel parametro server_name il nome di dominio effettivo che hai indicato al tuo server. Certbot cercherà nella configurazione del blocco del server quel parametro e creerà i file di configurazione crittografiamo in base a quel parametro. Esempio in un'immagine qui sotto:
sudo nano /etc/nginx/sites-available/example.com
Quando esegui questo comando, verrà avviata la procedura guidata di certbot. Se stai eseguendo il cerbot per la prima volta, ti chiederà prima di fornire un indirizzo e-mail da utilizzare come contatto e di accettare i termini di licenza di Let's encrypt.
Dopodiché, eseguirà la sfida http, otterrà il certificato e alla fine ti chiederà se vuoi che configuri subito il reindirizzamento https, che è anche una buona opzione.
Non appena la configurazione del reindirizzamento è completata, il nuovo dominio con certificato SSL dovrebbe funzionare immediatamente.
Imposta e testa il rinnovo automatico
I certificati Let's encrypt sono validi per impostazione predefinita per tre mesi e il rinnovo automatico del cerbot è configurato per rinnovare il certificato almeno una volta, quando il certificato ha meno di 30 giorni di validità. Una volta acquisito il certificato SSL, valido e attivo, raddoppia se il servizio timer del certbot è attivo e in esecuzione e testa il processo di rinnovo con l'opzione dry run:
sudo systemctl status certbot.timer
sudo certbot renew --dry-run
Verifica la configurazione di Nginx
Puoi ricontrollare la configurazione di nginx se il cerbot ha scritto correttamente la configurazione per i certificati SSL e per il reindirizzamento HTTPS. Cerbot riavvierà nginx una volta terminata la configurazione, dovresti avere il tuo dominio/sito web protetto e funzionante con SSL attivo.
Riepilogo
Per riassumere, abbiamo seguito i passaggi su come proteggere Nginx con Let's Encrypt SSL su macchine Debian 10 e anche su macchine Debian 11. Abbiamo utilizzato lo strumento certbot di Let's Encrypt per le richieste di certificati SSL ed è il rinnovo automatico. Per fortuna a certbot e al suo plug-in nginx, il processo è davvero semplice, diretto e veloce da completare. Un suggerimento su questo è:sarebbe una buona opzione avere un backup della cartella Let's encrypt e di averne spesso il backup (come ha suggerito certbot stesso). Questo è ovviamente facoltativo e dipende da come hai impostato la frequenza dei rinnovi dei certificati.
Crittografiamo il servizio, anche se gratuito e molto popolare nel mondo della tecnologia, è una buona opzione per proteggere alcuni tipi di siti Web. Tuttavia, i loro certificati gratuiti non sono consigliati per l'uso su siti Web di e-commerce per un esempio o qualsiasi tipo di sito che deve trasmettere e archiviare dati molto sensibili (carte di credito e simili). Ecco perché per impostazione predefinita si consiglia di avere un breve periodo di rinnovo per i certificati SSL. In quella nota, Let's encrypt non è l'unica opzione gratuita da utilizzare. Cloudflare ha la stessa opzione per fornire SSL gratuiti e può essere utilizzato anche per proteggere il tuo sito Web Nginx. Se sei interessato a questa opzione, puoi controllare il post su questo link.