Come abilitare https con Let’s encrypt

Avevamo visto come farlo con nginx, ora vediamo come farlo con Apache:

echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt-get update
sudo apt install python git virtualenv
sudo apt install python-certbot-apache -t jessie-backports
sudo nano /etc/apache2/sites-available/wordpress.conf

Aggiungete queste due righe

ServerName example.com
ServerAlias www.example.com
apache2ctl configtest

se Syntax OK

systemctl restart apache2
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -S

Se tutto ok:

certbot --apache

Controllate se va bene a https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

certbot renew

E vi dirà che non potete ancora (l’avete appena generato). Ora vediamo come automatizzare il rinnovo allora:

crontab -e

Premete invio e poi incollate al fondo:

30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log

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