Vediamo come utilizzare certbot per generare i certificati ssl da installare su un dominio.
Ho avuto la necessità di aggiungere ad alcuni server http il servizio https, generando i certificati SSL necessari. Erano tutti servizi a scarso uso, ma per alcune interazioni era necessario fare questo upgrade.
Vista la natura di questi siti ne ho approfittato per testare il servizio di certificati open di Let’s Encrypt.
Seguendo i dettagli della procedura consigliata, sono arrivato ad utilizzare il tool certbot uno script da utilizzare nella shell del server che consente di generare ed installare i certificati nei soli domini che mi servivano. La documentazione in questo caso è stata di grande aiuto.
Alcuni dettagli
Per eseguire correttamente la procedura, occorre tenere in considerazione alcuni aspetti, semplici passaggi che riporto per averne una traccia alle prossime necessità.
1. iptables
Occorre verificare che iptables gestisca le chiamate sulla porta 443 , per le richieste entranti del protocollo https, o la porta che intendi utilizzare.
$ sudo iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT ... ACCEPT ... ... ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443 ...
Se utilizzi un altro firewall, fai riferimento alla sua documentazione.
2. controlla il DNS
Il server che intendi certificare deve essere definito nel DNS che gestisce il tuo dominio.
Negli errori riportati da certbot veniva segnalato di controllare il DND. In riferimento ad un particolare url verificare che fosse definito nel DNS come record A/AAAA , ma ho appurato che anche un record CNAME funziona correttamente.
Mi pare ovvio, come indica anche la documentazione, che il server deve essere raggiungibile, altrimenti il servizio di certificazione non funziona.
Se ti trovi nel caso di server non pubblico, occorre procedere in altro modo e creare i certificati mediante openSSL, praticamente un’autocertificazione, ma questa è un’altra storia.
3. copie di sicurezza
Non dovrebbe essere necessario, ma la prudenza non è mai troppa. Nel caso tu sia un poco paranoico, come un buon sistemista dovrebbe essere, prima di tutto fai una copia della configurazione di apache/nginx.
Oppure tieni a portata di mano i backup da cui recuperare eventualmente i file della configurazione.
Sarà molto più semplice ripristinare la configurazione (è solo per paranoia, finora non ne ho avuta la necessità).
4. certbot: generare il certificato
Una volta installato certbot, seguendo le istruzioni del sistema che usi, sei quasi pronto per generare il certificato.
Occorre fermare il servizio http, per permettere a certbot di operare. Certbot crea un server https temporaneo per consentire al server di certificazione di validare la raggiungibilità del tuo sito.
All’esecuzione di cerbot recupera le configurazioni apache/nginx/ecc presentandoti la lista dei domini che puoi certificare. In automatico se non incontra errori, genera i certificati necessari e aggiorna la configurazione dei domini o dei virtualhost che hai scelto di certificare.
Ti consente di scegliere se impostare anche il redirect automatico da http a https dove possibile.
Basta lanciare il semplice comando:
$ sudo ./certbot-auto --apache oppure $ sudo ./certbot-auto --nginx
Nel caso vuoi intervenire manualmente nella configurazione dei tuoi domini e ti interessa solo generare i certificati basta aggiungere il parametro certonly ai comandi appena visti:
$ sudo ./certbot-auto --apache certonly $ sudo ./certbot-auto --nginx certonly
Se hai scelto la procedura automatica hai praticamente finito, altrimenti procedi con la configurazione dei domini per caricare i certificati generati, la posizione in cui trovarli ti viene indicata dal report generato da certbot.
5. riavvia il servizio http
Non rimane che far ripartire il servizio http e verificare che tutto funzioni.
Per scrupolo controlla anche gli eventuali altri domini erogati dallo stesso server. Sei ancora in tempo per intervenire se qualcosa è andato storto.
6. cron+certbot: rinnovare i certificati
L’autority che emette questi certificati è open, quindi i certificati hanno una validità di soli 3 mesi. Più che sufficienti per la maggior parte delle necessità.
E’ utile comunque impostare mediante cron il servizio di rinnovo dei certificati.
Trovi le indicazioni nella documentazione di certbot.