Come configurare Let’s Encrypt con nginx

La procedura è davvero easy, vi basterà installare certbot con:

sudo apt install certbot

Una volta installato eseguite:

sudo certbot certonly

Dovrebbe in automatico generarvi un certificato (seguite i passaggi e inserite mail e dominio). E una volta terminato i due file dovrebbero trovarsi qui:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Ora modificate il file di configurazione di nginx:

sudo nano /etc/nginx/sites-available/default

E dovrete fare in modo che la porta 80 faccia un redirect alla 443 e aggiungere un server alla 443:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;
}

Ovviamente dovrete anche controllare che il vostro firewall permetta TCP alla porta 443, nel caso usiate iptables (qui per vedere l’elenco):

sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Controllate che sia tutto ok su nginx con:

sudo nginx -t

Se passate il test, eseguite:

sudo service nginx restart

Per rinnovare il certificato vi basterà eseguire:

sudo cerbot renew

Mentre se volete che sia automatizzato con crontab:

sudo crontab -e

Ed incollate:

30 2 * * * /usr/bin/certbot renew --noninteractive --renew-hook "/bin/systemctl reload nginx" >> /var/log/le-renew.log

Come creare e firmare il proprio certificato SSL

Non sto a raccontarvi cos’è SSL o HTTPS perché se siete qua probabilmente già sapete di cosa sto parlando.

Andiamo dritti al sodo. Se volete autocertificarvi e quindi generare un certificato SSL per uso locale o di sperimentazione (dico questo perché ogni volta da browser dovrete confermare e accettare che volete installare il certificato, cliccando qualcosa come 3 volte conferma) aprite subito il terminale ed eseguite (vi chiederà una password, segnatevela ovviamente):

openssl genrsa -des3 -out myCA.key 2048

Ora generate un root certificate eseguendo:

openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem

Inserite tutti i dettagli e… voilà, già fatto!