Let’s encrypt e nginx
22 Dicembre 2015
Durante l’ultima workweek Mozilla a Orlando ho assistito a una breve presentazione di Let’s Encrypt da parte di Eric Rescorla (:ekr). Mi ero ripromesso di fare qualche prova al ritorno e, complice il passaggio da dedicato+debian+apache a vps+ubuntu+nginx, mi sono finalmente deciso a farlo.
Che cos’è “Let’s Encrypt”: un’autorità di certificazione indipendente e aperta che permette al proprietario di un sito web di ottenere gratuitamente dei certificati. Per ulteriori dettagli consiglio la lettura del post inaugurale del blog.
Veniamo al dunque: come ottenere un certificato per il dominio che ospita questo blog e configurare nginx per utilizzarlo.
Per prima cosa bisogna clonare il repository (non esiste ancora un pacchetto per Ubuntu):
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
Come spiegato nella documentazione: letsencrypt-auto
è un wrapper che si occupa di installare le dipendenze e creare un ambiente virtuale per Python, e il plugin per nginx è ancora altamente sperimentale (al contrario di Apache).
Nel mio caso voglio:
- ottenere solamente il certificato senza modificare alcuna configurazione;
- utilizzare il webserver “standalone” per recuperare il certificato. Siccome il plugin occupa la porta 80 o la 443, potrebbe essere necessario bloccare temporaneamente il server nginx.
Questo è il contenuto del file di configurazione per evitare una linea di comando infinita (modificare l’indirizzo email)
# Use a 4096 bit RSA key instead of 2048 rsa-key-size = 4096 email = YOUREMAIL@EXAMPLE.COM # Standalone authenticator on port 443 authenticator = standalone standalone-supported-challenges = tls-sni-01
E questo il comando da lanciare (modificare il dominio e il percorso al file di configurazione)
./letsencrypt-auto certonly --config /root/cli.ini -d EXAMPLE.COM
La prima volta verrà chiesto di accettare le condizioni di servizio. Dopo pochi istanti il certificato verrà salvato in una sottocartella di /etc/letsencrypt/live/
.
A questo punto bisogna aggiornare la configurazione del dominio in nginx. Personalmente ho utilizzato il generatore messo a disposizione da Mozilla, modificando
ssl_dhparam /etc/nginx/dhparam.pem; ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
E rimuovendo la linea ssl_session_tickets off;
(non compatibile con la mia versione di nginx).
Per utilizzare questa configurazione, la prima volta bisogna generare una chiave Diffie-Hellman:
cd /etc/nginx openssl dhparam -out dhparam.pem 2048
Se riuscite a leggere questo post, significa che non è esploso nulla.
Non è possibile inserire nuovi commenti. I commenti vengono disattivati automaticamente dopo 60 giorni.