Let’s Encrypt: installazione su LAMP Debian

Server Tony Arcucci

Google ha deciso che Chrome dalla versione 56, segnalerà come “Non sicuro” ogni siti che non abbia il certificato HTTPS installato.

L’acquisto di un certificato SSL per ogni dominio in nostro possesso ha normalmente un costo (varia a seconda del tipo di certificato), in nostro aiuto di viene Let’s Encrypt (https://letsencrypt.org)

Chi è Let’s Encrypt

Let’s Encrypt è una Certificate Authority che emette certificati gratuiti.

Creazione dei certificati

Per poter usufruire dei servizi messi a disposizione di Let’s Encrypt abbiamo bisogno di un client: io utilizzo certbot (https://certbot.eff.org)

I certificati emessi da Let’s Encript hanno una scadenza di 3 mesi (per la precisione 90 giorni), pertanto vanno rinnovati con più frequenza rispetto a quello che siamo abituati a fare con gli annuali.

Come primo passo bisogna include il repository jessie-backport al sistema aggiungendo al file /etc/apt/source.list la seguente linea:

deb http://ftp.debian.org/debian jessie-backports main

  1. Eseguire il comando: apt-get update
  2. Installare Python: sudo apt-get install python-certbot-apache -t jessie-backports
  3. Eseguire il comando: sudo certbot --apache

Il software ci indica dove verranno salvati i file di log di debug:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Nel mio caso specifico, nei file di configurazione di Apache 2, certbot non è in grado di trovare i nomi dei 3 domini presenti sul server, pertanto devo indicarli manualmente.
Attenzione, la procedura che sto per illustrarvi, porta all’anomala modifica dei file di configurazione di Apache 2 da parte di certbot. La procedura di generazione dei certificati tramite certbot funziona bene se è presente il solo file di configurazione Apache 2 default.conf con un solo dominio presente.
Comunque spiegherò la procedura che non mi ha creato problemi più avanti al paragrafo ‘Disastro Totale’.

Procedura di modifica automatica dei file di configurazione di Apache 2

No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter ‘c’ to cancel):
www.oksalute.it, www.evoluzioneesalute.it, efad.evoluzioneesalute.it

Enter email address (used for urgent renewal and security notices) (Enter ‘c’ to
cancel): arcucci@gmail.com

Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

——————————————————————————-
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
——————————————————————————-
(A)gree/(C)ancel: A
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for www.oksalute.it
tls-sni-01 challenge for www.evoluzioneesalute.it
tls-sni-01 challenge for efad.evoluzioneesalute.it
/usr/lib/python2.7/dist-packages/OpenSSL/rand.py:58: UserWarning: implicit cast from ‘char *’ to a different pointer type: will be forbidden in the future (check that the types are as you expect; use an explicit ffi.cast() if they are correct)
result_code = _lib.RAND_bytes(result_buffer, num_bytes)

We were unable to find a vhost with a ServerName or Address of www.oksalute.it.
Which virtual host would you like to choose?
(note: conf files with multiple vhosts are not yet supported)
——————————————————————————-
1: default-ssl.conf | | HTTPS | Enabled
——————————————————————————-
Press 1 [enter] to confirm the selection (press ‘c’ to cancel): 1

We were unable to find a vhost with a ServerName or Address of www.evoluzioneesalute.it.
Which virtual host would you like to choose?
(note: conf files with multiple vhosts are not yet supported)
——————————————————————————-
1: default-ssl.conf | | HTTPS | Enabled
——————————————————————————-
Press 1 [enter] to confirm the selection (press ‘c’ to cancel): 1

We were unable to find a vhost with a ServerName or Address of efad.evoluzioneesalute.it.
Which virtual host would you like to choose?
(note: conf files with multiple vhosts are not yet supported)
——————————————————————————-
1: default-ssl.conf | | HTTPS | Enabled
——————————————————————————-
Press 1 [enter] to confirm the selection (press ‘c’ to cancel): 1
Waiting for verification…
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem

We were unable to find a vhost with a ServerName or Address of www.oksalute.it.
Which virtual host would you like to choose?
(note: conf files with multiple vhosts are not yet supported)
——————————————————————————-
1: default-ssl.conf | | HTTPS | Enabled
——————————————————————————-
Press 1 [enter] to confirm the selection (press ‘c’ to cancel): 1
Deploying Certificate to VirtualHost /etc/apache2/sites-available/default-ssl.conf

We were unable to find a vhost with a ServerName or Address of www.evoluzioneesalute.it.
Which virtual host would you like to choose?
(note: conf files with multiple vhosts are not yet supported)
——————————————————————————-
1: default-ssl.conf | www.oksalute.it | HTTPS | Enabled
——————————————————————————-
Press 1 [enter] to confirm the selection (press ‘c’ to cancel): 1
Deploying Certificate to VirtualHost /etc/apache2/sites-available/default-ssl.conf

We were unable to find a vhost with a ServerName or Address of efad.evoluzioneesalute.it.
Which virtual host would you like to choose?
(note: conf files with multiple vhosts are not yet supported)
——————————————————————————-
1: default-ssl.conf | Multiple Names | HTTPS | Enabled
——————————————————————————-
Press 1 [enter] to confirm the selection (press ‘c’ to cancel): 1
Deploying Certificate to VirtualHost /etc/apache2/sites-available/default-ssl.conf

Please choose whether HTTPS access is required or optional.
——————————————————————————-
1: Easy – Allow both HTTP and HTTPS access to these sites
2: Secure – Make all requests redirect to secure HTTPS access
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 2
Created redirect file: le-redirect-www.oksalute.it.conf
Rollback checkpoint is empty (no changes made?)

——————————————————————————-
Congratulations! You have successfully enabled https://www.oksalute.it,
https://www.evoluzioneesalute.it, and https://efad.evoluzioneesalute.it

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.oksalute.it
https://www.ssllabs.com/ssltest/analyze.html?d=www.evoluzioneesalute.it
https://www.ssllabs.com/ssltest/analyze.html?d=efad.evoluzioneesalute.it
——————————————————————————-

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.oksalute.it/fullchain.pem. Your cert will
expire on 2018-01-06. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again with the
“certonly” option. To non-interactively renew *all* of your
certificates, run “certbot renew”
– If you lose your account credentials, you can recover through
e-mails sent to arcucci@gmail.com.
– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Disastro annunciato

La procedura su descritta ha scritto le modifiche automaticamente nel file di configurazione di Apache 2, ma dato che ho 3 domini diversi da configurare nel server, questa non ha funzionato correttamente.
Per ovviare al problema ho dovuto ripristinare i file di configurazione di Apache 2 e fare generare i certificati a certbot singolarmente tramite il comando certbot --apache certonly.
Alla fine della procedura, certbot mi indica dove posso trovare i file del certificato necessari alla configurare del SSL all’interno dei file di configurazione di Apache2, nel mio caso nella cartella /etc/letsencrypt/live/www.nomedominio.ext/
Con i file generati posso infine modificare i file di configurazione di Apache per attivare il protocollo HTTPS.

Rinnovo del certificato

Il certificato ha una durata di 90 giorni, per rinnovalo è sufficiente lanciare il comando:

sudo certbot renew

Prima di lanciare il comando, stoppare il server http, per esempio:
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

No ratings yet.

Please rate this

Lascia un commento