Utilizzo e configurazione di Let’s Encrypt in ambiente Linux/Apache

In questo articolo abbiamo proposto l’utilizzo della Certification Authority Let’s Encrypt ed
una configurazione basata sull’implementazione del rilascio automatico di certificati per Internet Information Services.

Analogamente al Web server Microsoft possiamo utilizzare questa CA anche per ambienti Open, quindi Linux, OpenBsd, Nginx ed altri e quindi anche per il rilascio automatico di certificati nel Web server Apache

Nell’analisi della soluzione proposta è bene tenere in considerazione che l’estrema varietà di distribuzioni Linux, comporta anche differenze di implementazione della soluzione proposta, in questo caso i passi descritti sono riferiti ad una distribuzione Centos 6.9 e quindi applicabili all’ambiente RedHat, così come Oracle Linux Enterprise.

Il client ACME (Automated Certificate Management Environment), così come per l’ambiente Windows è disponibile anche in Linux un Client ed è scaricabile tramite Git

Per procedere alla sua installazione è necessario procedere come segue:

  • Installare HTTPD
  • Installare MOD_SSL
  • Installare i riferimenti al repository EPEL (Extra Packages for Enterprise Linux) da cui installeremo Git
  • replicare in locale il repository GIT per Let’s Encrypt in /usr/local

terminata la parte di semplice installazione è necessario procedere con i pochi passi necessari ad attivare e configurare il client in modo da permettere il primo rilascio ed il successivo rinnovo dei vari certificati.

È da tenere presente che:

As a domain may resolve to multiple IPv4 and IPv6 addresses, the server will connect to at least one of the hosts found in the DNS A and AAAA records, at its discretion. Because many web servers allocate a default HTTPS virtual host to a particular low-privilege tenant user in a subtle and non-intuitive manner, the challenge must be completed over HTTP, not HTTPS.

Al Punto 1 viene installato il Web Server Apache tramite il comando yum install HTTPD e verranno anche installate le eventuali dipendenze.

Mod_ssl previsto al punto2 è il modulo di gestione del protocollo SSL/TLS in Apache installabile con yum install mod_ssl

Punto 3, il repository EPEL contiene molte estensioni per i sistemi basati su sistemi Linux RedHat Centos e similari anche qui con il comando yum install epel-release otterremo la possibilità, sempre tramite yum di installare numerosi altri pacchetti in questo caso epel ci consente di installare GIT.

AL punto 4 Tramite il comando git clone https://github.com/letsencrypt/letsencrypt posizionandosi in /usr/local potremo replicare in locale la componente ACME con cui richiedere successivamente a Let’s Encrypt i certificati.

Figura 1 Replica da GIT di Let’s Encrypt

Configurazioni preliminari

Prima di procedere con la vera e propria richiesta alla CA dovremo però fare in modo che il WEB server risponda effettivamente anche per l’host per cui attiveremo HTTPS, questa impostazione, è all’interno del file di configurazione di Apache in httpd.conf, editandolo, dovremo definire un Virtual Host per il nostro sito attivo in http.

Figura 2 Impostazione VirtualHost Httpd

Richiesta del certificato HOST

Definita questa impostazione potremo procedere alla richiesta vera e propria del certificato utilizzando l’ambiente CertBot scaricato prima da GIT, posizionandoci quindi in /usr/local/letsencrypt dovremo eseguire il comando:

./letsencrypt-auto --apache -d linux1.robimassa.it

Dove specificheremo il tipo di Web Server utilizzato, ed l’FQDN dell’host che andremo a configurare

Per un elenco completo delle opzioni del client Let’s Encrypt potremo usare l’opzione –help

A questo punto verrà effettuata la richiesta verso la CA, sarà verificato se la configurazione DNS ed host sono corrette, ed in piena autonomia il client provvederà anche a modificare per noi la configurazione del file httpd.conf.

Durante la procedura di installazione sarà possibile scegliere se definire un redirect dalla porta 80 alla 443 o mantenere il precedente protocollo http ed insieme https.

Figura 3 Output comando di richiesta Certificato

Terminata la procedura di configurazione il file httpd.conf sarà modificato secondo le impostazioni volute

Figura 4 Modifica httpd.conf

La nuova impostazione di HTTPS con il certificato richiesto è definita in un file di configurazione che verrà incluso nella configurazione principale

Figura 5

Si noti che il certificato, la relativa chiave privata, la csr e più in generale tutto l’ambiente necessario alla gestione è creato all’interno di /etc/letsencrypt.

Rinnovo automatico del Certificato

Terminata la prima configurazione/richiesta il certificato rilasciato è valido per 3 mesi

Figura 6

il rinnovo può avvenire in modo automatico tramite un’attività impostata (anche quotidianamente) in cron, il comando da impostare è usr/local/letsencrypt-auto renew


ogni operazione che è compiuta dal client è “loggata” in /var/log/letsencrypt/letsencrypt.log

Conclusioni

Let’s Encrypt è una CA Free che può essere utilizzata liberamente da chiunque, il limite finora è nella possibilità di richiedere certificati di tipo Wildcard, ossia per un intero dominio ad esempio *. robimassa.it

Qualche mese fa è stato annunciato anche il rilascio per questo tipo di certificati a partire da gennaio 2018

Figura 7

Riferimenti:

https://letsencrypt.org/

https://certbot.eff.org/