Let’s Encrypt, dei Geni!
Cosa è?
Let’s Encrypt è una Certification Authority che rivoluzionerà il concetto stesso di CA.
Il progetto è open source, automatizzato, e completamente gratuito.
Come funziona Let’s Encrypt ?
Parto dal presupposto che conosciate già il funzionamento del protocollo HTTPS, detto questo il sistema di verifica dell’assegnazione del certificato è un semplicissimo processo client/server e scade ogni 90 giorni; per sapere il perché di questo numero specifico rimando la lettura alle FAQ del sito.
I signori di Let’s Encrypt hanno già accordi con tutti i browser infatti la Root CA è già inserita al loro interno.
La richiesta del certificato e i successivi rinnovi posso essere automatizzate utilizzando il client ma solo per Apache, è comunque possibile automatizzare il tutto utilizzando uno script bash.
Dimenticavo, letsencrypt funziona solo su sistemi Unix based che hanno a disposizione Python.
Il funzionamento è abbastanza semplice, il tutto avviene tra i server CA ed il client. All’atto della richiesta il client comunica con la CA iniziando un dialogo (sfida), il client chiede a Let’s il nonce, Let’s lo invia al client e gli chiede di firmarlo con la propria chiave privata, successivamente Let’s crea un file in uno specifico percorso del server web. Quando il nonce è stato firmato Let’s scarica il file che aveva precedentemente inviato, verifica la bontà di entrambi e se tutto è andato bene dichiara il server web come il proprietario del nome scelto.
Ottenere un certificato valido
Per ottenere il nostro certificato valido abbiamo bisogno di due cose fondamentali, un dominio e un server raggiungibile da internet.
Per creare un certificato valido ci sono due soluzioni; utilizzare il client letsencrypt installato sul server o un container docker per i più paranoici, noi vedremo la soluzione classica, e cioè quella del client installato.
Iniziamo con l’installazione di letsencrypt, essendo condiviso su github occorre installare anche il loro client..
$ sudo apt-get install git $ cd /opt $ git clone https://github.com/letsencrypt/letsencrypt
Una volta installato procediamo con la richiesta di un certificato. Tra le varie procedure disponibile utilizzeremo quella che impatta meno in una configurazione di web server già esistente, la generazione del certificato senza la configurazione di apache.
$ /opt/letsencrypt/letsencrypt-auto certonly --text --standalone --standalone-supported-challenges tls-sni-01 --domain www.oneos.it --email federico.fiordoliva@gmail.com--agree-tos --renew-by-default
Se la generazione delle chiavi e del certificato di Let’s Encrypt è andata a buon fine troveremo i nostri 3 files qui.
$ cd /etc/letsencrypt/live/www.oneos.it $ ls -la totale 8 drwxr-xr-x 2 root root 4096 gen 10 11:36 ./ drwx------ 3 root root 4096 gen 10 11:36 ../ lrwxrwxrwx 1 root root 36 gen 10 11:36 cert.pem -> ../../archive/www.oneos.it/cert.pem lrwxrwxrwx 1 root root 37 gen 10 11:36 chain.pem -> ../../archive/www.oneos.it/chain.pem lrwxrwxrwx 1 root root 41 gen 10 11:36 fullchain.pem -> ../../archive/www.oneos.it/fullchain.pem lrwxrwxrwx 1 root root 39 gen 10 11:36 privkey.pem -> ../../archive/www.oneos.it/privkey.pem
A questo punto dobbiamo solo utilizzare questi certificati nella nostra configurazione di Apache.
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.oneos.it/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.oneos.it/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.oneos.it/chain.pem
Verificare il certificato.
Automatizzare il rinnovo dei certificati
Sempre per il fatto che riscoprire l’acqua calda non ha senso, ho ripescato in rete uno script per l’automazione del rinnovo dei certificati di Let’s Encrypt, questa la URL: le_renew.
Ora non resta che inserirlo in un cron job per lanciarlo automaticamente. Salviamo il file nella cartella tools di letsencrypt.
$ cd /etc/cron.daily $ touch le_renew $ chmod 755 le_renew $ mkdir /var/log/letsencrypt
#!/bin/sh /root/letsencrypt/tools/le_renew www.oneos.it >> /var/log/letsencrypt/lerenew.log
Let’s Encrypt
Enjoy!!
- Coppia di chiavi RSA per ssh, come generarle - 18 Ago,2019
- Let’s Encrypt su pfSense – webConfigurator - 04 Apr,2017
- Isc Dhcpd Openldap su Ubuntu 16.04 - 03 Ott,2016
Leave a Comment