Estendendo l’ultimo tutorial su Let’s Encrypt riguardante i certificati SSL/TLS gratuiti, in questo articolo mostreremo come ottenere e installare certificati SSL/TLS gratuiti emessi dall’Autorità di Certificazione Let’s Encrypt per il server web Apache su distribuzioni CentOS/RHEL 7/6 e anche su Fedora.
Se desideri installare Let’s Encrypt per Apache su Debian e Ubuntu, segui questa guida qui sotto:
Configura Let’s Encrypt per proteggere Apache su Debian e Ubuntu
Testing Sample Environment

Requisiti
- A registered domain name with valid
A
records to point back to your server public IP Address. - Server Apache installato con il modulo SSL abilitato e l’hosting virtuale abilitato nel caso in cui si ospitino più domini o sottodomini.
Passaggio 1: Installare il server web Apache
1. Se non è ancora installato, il demone httpd può essere installato emettendo il comando seguente:
# yum install httpd
2. Affinché il software Let’s Encrypt funzioni con Apache, assicurati che il modulo SSL/TLS sia installato emettendo il seguente comando:
# yum -y install mod_ssl
3. Infine, avvia il server Apache con il seguente comando:
# systemctl start httpd.service [On RHEL/CentOS 7] # service httpd start [On RHEL/CentOS 6]
Passaggio 2: Installare il certificato SSL Let’s Encrypt
Il metodo più semplice per installare il client Let’s Encrypt è clonare il repository di GitHub nel tuo filesystem. Per installare git sul tuo sistema, devi abilitare i repository Epel con il seguente comando.
# yum install epel-release
5. Una volta aggiunti i repository Epel al tuo sistema, procedi con l’installazione del client git eseguendo il comando seguente:
# yum install git
6. Ora, una volta installate tutte le dipendenze necessarie per gestire Let’s Encrypt, vai alla directory /usr/local/
e inizia a scaricare il client Let’s Encrypt dal suo repository ufficiale su GitHub con il seguente comando:
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt
Passo 3: Ottenere un certificato SSL Let’s Encrypt gratuito per Apache
7. Il processo di ottenimento di un certificato Let’s Encrypt gratuito per Apache è automatizzato per CentOS/RHEL grazie al plugin apache.
Eseguiamo il comando di script Let’s Encrypt per ottenere un certificato SSL. Vai alla directory di installazione di Let’s Encrypt da /usr/local/letsencrypt
ed esegui il comando letsencrypt-auto
fornendo l’opzione --apache
e il flag -d
per ogni sottodominio per cui hai bisogno di un certificato.
# cd /usr/local/letsencrypt # ./letsencrypt-auto --apache -d your_domain.tld

8. Fornisci l’indirizzo email che sarà utilizzato da Let’s Encrypt per recuperare la tua chiave persa o per notifiche urgenti e premi Invio per continuare.

9. Accetta i termini della licenza premendo il tasto Invio.

10. Su CentOS/RHEL, di default, il server Apache non utilizza il concetto di separare le directory per gli host abilitati dagli host disponibili (inattivi) come fanno le distribuzioni basate su Debian.
Inoltre, l’hosting virtuale è disabilitato di default. La dichiarazione Apache che specifica il nome del server (ServerName) non è presente nel file di configurazione SSL.
Per attivare questa direttiva, Let’s Encrypt ti chiederà di selezionare un host virtuale. Poiché non trova alcun Vhost disponibile, seleziona il file ssl.conf
da modificare automaticamente dal client Let’s Encrypt e premi Invio per continuare.

11. Successivamente, scegli il metodo Semplice per le richieste HTTP e premi Invio per procedere.

12. Infine, se tutto è andato liscio, dovrebbe comparire un messaggio di congratulazioni sullo schermo. Premi Invio per rilasciare il prompt.

Ecco fatto! Hai emesso con successo un certificato SSL/TLS per il tuo dominio. Ora puoi iniziare a navigare sul tuo sito web utilizzando il protocollo HTTPS.
Passaggio 4: Test dell’Encryption Let’s Encrypt gratuita sul Dominio
13. Per testare la correttezza della tua connessione SSL/TLS del dominio, visita il link sottostante e testa il tuo certificato sul tuo dominio.
https://www.ssllabs.com/ssltest/analyze.html

14. Se ricevi una serie di segnalazioni riguardanti le vulnerabilità del tuo dominio nei test effettuati, allora è necessario correggere urgentemente quei buchi di sicurezza.
Un punteggio complessivo di classe C rende il tuo dominio molto insicuro. Per risolvere questi problemi di sicurezza, apri il file di configurazione SSL di Apache e apporta le seguenti modifiche:
# vi /etc/httpd/conf.d/ssl.conf
Cerca la riga con l’affermazione SSLProtocol
e aggiungi -SSLv3
alla fine della riga.

Vai più in profondità nel file, cerca e commenta la riga con SSLCipherSuite
mettendo un #
davanti ad essa e aggiungi il seguente contenuto sotto questa riga:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLOptions +StrictRequire

15. Dopo aver apportato tutte le modifiche sopra indicate, salva e chiudi il file, quindi riavvia il demone Apache per applicare le modifiche.
# systemctl restart httpd.service [On RHEL/CentOS 7] # service httpd restart [On RHEL/CentOS 6]
16. Ora, controlla nuovamente lo stato della crittografia del tuo dominio, visitando lo stesso link di prima. Per eseguire nuovi test, premi il link Cancella cache dal sito web.
https://www.ssllabs.com/ssltest/analyze.html

Ora dovresti ottenere un punteggio complessivo di classe A, il che significa che il tuo dominio è altamente sicuro.
Fase 4: Rinnovo automatico dei certificati Let’s Encrypt su Apache
17. Questa versione beta del software Let’s Encrypt rilascia certificati con data di scadenza dopo 90 giorni. Quindi, per rinnovare il certificato SSL, devi eseguire nuovamente il comando letsencrypt-auto
prima della data di scadenza, con le stesse opzioni e flag utilizzati per ottenere il certificato iniziale.
Di seguito viene presentato un esempio su come rinnovare manualmente il certificato.
# cd /usr/local/letsencrypt # ./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld
18. Per automatizzare questo processo, crea lo script bash seguente fornito da GitHub Erikaheidi, nella directory /usr/local/bin/
con il seguente contenuto. (lo script è leggermente modificato per riflettere la nostra directory di installazione di Let’s Encrypt).
# vi /usr/local/bin/le-renew-centos
Aggiungi il seguente contenuto al file le-renew-centos
:
!/bin/bash domain=$1 le_path='/usr/local/letsencrypt' le_conf='/etc/letsencrypt' exp_limit=30; get_domain_list(){ certdomain=$1 config_file="$le_conf/renewal/$certdomain.conf" if [ ! -f $config_file ] ; then echo "[ERROR] The config file for the certificate $certdomain was not found." exit 1; fi domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}") last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}') if [ "${last_char}" = "," ]; then domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}') fi echo $domains; } if [ -z "$domain" ] ; then echo "[ERROR] you must provide the domain name for the certificate renewal." exit 1; fi cert_file="/etc/letsencrypt/live/$domain/fullchain.pem" if [ ! -f $cert_file ]; then echo "[ERROR] certificate file not found for domain $domain." exit 1; fi exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s) datenow=$(date -d "now" +%s) days_exp=$(echo \( $exp - $datenow \) / 86400 |bc) echo "Checking expiration date for $domain..." if [ "$days_exp" -gt "$exp_limit" ] ; then echo "The certificate is up to date, no need for renewal ($days_exp days left)." exit 0; else echo "The certificate for $domain is about to expire soon. Starting renewal request..." domain_list=$( get_domain_list $domain ) "$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}" echo "Restarting Apache..." /usr/bin/systemctl restart httpd echo "Renewal process finished for domain $domain" exit 0; fi
19. Concedi i permessi di esecuzione per lo script, installa il pacchetto bc e esegui lo script per testarlo. Utilizza il nome di dominio come parametro posizionale per lo script. Esegui i comandi seguenti per completare questo passaggio:
# yum install bc # chmod +x /usr/local/bin/le-renew-centos # /usr/local/bin/le-renew-centos your_domain.tld
20. Infine, utilizzando la pianificazione di Linux, aggiungi un nuovo cron job per eseguire lo script ogni due mesi, assicurando che il tuo certificato venga aggiornato prima della data di scadenza.
# crontab -e
Aggiungi la seguente riga alla fine del file.
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
Ecco fatto! Il tuo server Apache in esecuzione su un sistema CentOS/RHEL sta ora servendo contenuti SSL utilizzando un certificato SSL gratuito di Let’s Encrypt.
Source:
https://www.tecmint.com/install-lets-encrypt-ssl-certificate-to-secure-apache-on-rhel-centos/