#howto - Installazione e configurazione di Nginx con Let's Encrypt su Debian 10
In questa guida andremo a vedere come procedere alla installazione e configurazione con Let’s Encrypt di Nginx su Debian 10.
Installazione di Nginx
L’installazione del seguente web server è piuttosto semplice essendo incluso nei repository Debian Buster predefiniti. Come prima cosa aggiorniamo il gestore dei pacchetti con:
sudo apt update
Dopodichè procediamo all’installazione di Nginx:
sudo apt install nginx
Una volta terminata l’installazione, il servizio si avvierà automaticamente. Per verificare il suo stato andiamo a digitare:
sudo systemctl status nginx
Se avete eseguito tutto correttamente vi comparirà un output simile a questo:
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-01-16 14:20:30 CET; 9s ago
Infine abilitiamo l’esecuzione al riavvio del server, così da riavviarsi ogni volta che il server tornerà online:
sudo systemctl enable nginx
La prossima parte della guida non sarà obbligatoria per chi non utilizza alcun tipo di firewall.
Regolazione del firewall
Per gli utenti che utilizzano ufw
possono aprire la porta HTTP (80
) abilitando il profilo 'Nginx HTTP'
:
sudo ufw allow 'Nginx HTTP'
Per chi invece utilizza nftables
per aprire la porta HTTP è necessario eseguire questo comando:
nft add rule inet filter input tcp dport {80} ct state new,established counter accept
Configurazione Nginx con Let’s Encrypt
Ora procediamo alla configurazione con Let’s Encrypt, una certification authority che fornisce certificati SSL gratuiti con un sistema automatizzato.
Come primo step installiamo alcune dipendenze:
sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface
Adesso possiamo installare il pacchetto python3-certbot-nginx
:
sudo apt install python3-certbot-nginx
Ora dobbiamo far sì che Certbot rilevi il “blocco” server corretto nella nostra configurazione di Nginx cosi da configurare SSL automaticamente.
Supponendo di aver già settato il nostro “blocco” server, dovremmo avere all’interno di /etc/nginx/sites-available/nostro_dominio il nome del nostro server settato correttamente.
Per verificare ciò apriamo la seguente directory con il nostro text editor preferito:
sudo nano /etc/nginx/sites-available/nostro_dominio
E cerchiamo la stringa server_name:
server_name nostro_dominio www.nostro_dominio;
Se il risultato è corretto, possiamo uscire dal nostro editor e muoverci nel prossimo step.
In caso contrario, salviamo il file, usciamo dal editor e verifichiamo la sintassi della nostra configurazione:
sudo nginx -t
Se si ottiene un errore, riaprire il file e verificare che non ci sia alcun tipo di carattere errato o mancante.
Una volta fatto ciò, ricaricare Nginx con la nuova configurazione:
sudo systemctl reload nginx
Se tutto ha funzionato correttamente, possiamo procedere ad aggiornare il firewall per consentire il traffico HTTPS.
Consentire il traffico HTTPS tramite Firewall
Se si possiede ufw
come firewall, bisognerà aggiustare alcune impostazioni per consentire il traffico HTTPS.
Per vedere lo stato corrente digitiamo:
sudo ufw status
Dovrebbe dare un output del genere, simbolo che solo il traffico HTTP è consentito:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Per consentire il traffico HTTPS è necessario consentire il profilo 'Nginx-Full'
e eliminare 'Nginx-HTTP'
:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
Ora digitando di nuovo:
sudo ufw status
L’output dovrebbe risultare nel seguente modo:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Ottenere un certificato SSL
È tempo di generare il nostro certificato SSL sfruttando il plugin installato in precedenza, ovvero Certbot.
Per fare ciò digitiamo:
sudo certbot --nginx -d nostro_dominio -d www.nostro_dominio
Se è la prima volta che si esegue certbot
vi verrà chiesto di inserire la vostra mail e di accettare i termini e condizioni. Una volta fatto ciò, Certbot comunicherà con i server di Let’s Encrypt e verificherà se sei tu il proprietario del dominio al quale stai richiedendo un certificato.
Se il processo termina correttamente, Certbot ti chiederà come vorresti configurare le impostazioni per il certificato HTTPS:
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Una volta fatte le vostre scelte vi apparirà un messaggio riguardo alla corretta esecuzione del processo:
Output
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2019-10-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
Ecco a voi i certificati scaricati, installati e caricati, l’unica cosa che vi rimane è di ricaricare il vostro sito web per verificarne il corretto funzionamento.
Per ulteriori chiarimenti visitare il nostro gruppo Telegram.