Manuel Roccon

ICT & Cyber Security Specialist

Installare Let’s Encrypt in CentOS 7

Questo articolo mostra come installare un certificato SSL Encrypt su CentOS 7 con Apache attraverso certbot che eseguirà per noi la richiesta e il rinnovo automatico dei certificati utilizzati nelle connessioni SSL (Secure Sockets Layer).

Secure Sockets Layer è un protocollo progettato per consentire alle applicazioni di trasmettere informazioni in modo sicuro e protetto. Le applicazioni che utilizzano i certificati SSL sono in grado di gestire l’invio e la ricezione di chiavi di protezione e di criptare/decriptare le informazioni trasmesse utilizzando le stesse chiavi.

Per stabilire una connessione sicura tramite SSL, è necessario che l’applicazione abbia una chiave di protezione, chiave che deve essere assegnata da un’Authority preposta che la rilascerà sotto forma di certificato.

Let’s Encrypt è una autorità di certificazione completamente gratuita e automatizzata sviluppata da Internet Security Research Group (ISRG) e riconosciuta da tutti i principali browser.

Attraverso l’utilizzo di certbot, i proprietari di siti Web possono ottenere facilmente certificati di sicurezza in pochi minuti, consentendo un’esperienza web più sicura per tutti.

1. Aggiornamento del sistema

Prima di procedere all’installazione dei pacchetti accertiamoci di avere il sistema aggiornato:

# yum -y update

2. Installazione di Apache

Installiamo Apache utilizzando questo comando:

# yum -y install httpd

3. Installazione di mod_ssl

Installiamo il modulo di apache mod_ssl, necessario per attivare SSL che necessiterà di configurare il certificato per criptare e decriptare le richieste web:

# yum -y install mod_ssl

4. Configure Apache

Creiamo una directory necessaria per contenere la nostra applicazione:

# mkdir /var/www/test

Creiamo un file di configurazione virtual host e andiamo a inserirci il testo sottostante:

# nano /etc/httpd/conf.d/test-site.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/test"
    ServerName test.com
    ServerAlias www.test.com
    ErrorLog "/var/log/httpd/test.error_log"
    CustomLog "/var/log/httpd/test.access_log" common
</VirtualHost>

Inseriamo nella nostra directory creata precedente un file index.html di esempio:

# nano /var/www/test/index.html

It works!

Impostiamo Apache come proprietario della directory “/var/www/test” contenete la nostra applicazione web:

# chown -R apache:apache /var/www/test

A questo punto Apache è correttamente installato e possiamo procedere ad installare certbot.

5. Installazione certbot

Per installare certbot abbiamo bisogno della repository EPEL, utilizziamo il comando sottostante per abilitarlo:

# yum -y install epel-release

Installiamo yum-utils:

# yum -y install yum-utils

E infine certbot per Apache:

# yum -y install certbot python2-certbot-apache

A installazione completata eseguiamo questo comando per avviare la configurazione del certificato:

# certbot

Certbot analizzerà i vhost attivi e vi chiederà su quale attivare HTTPS:

[root@1837d ~]# certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
 

Which names would you like to activate HTTPS for?
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
1: test.com
2: www.test.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel):  

A questo punto verrà generato e installato il certificato:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for catalogo.manuelroccon.it
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/httpd/sites-available/test.com-le-ssl.conf
Deploying Certificate to VirtualHost /etc/httpd/sites-available/test.com-le-ssl.conf
Enabling site /etc/httpd/sites-available/test.com-le-ssl.conf by adding Include to root configuration 

E’ possibile far configurare da certbot il redirect automatico delle richieste HTTP in HTTPS:

 
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Se tutto è stato eseguito correttamente verrà mostrato questo messaggio:

Congratulations! You have successfully enabled https://test.com
 

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

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/test.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/test.com/privkey.pem
Your cert will expire on 2020-02-15. 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 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 

6. Configurazione rinnovo automatico

Creiamo una attività pianificata che consenta a certbot di eseguire il rinnovo automatico dei certificati.

Eseguiamo il comando per modificare crontab:

# crontab -e

Aggiungiamo il comando automatico che rinnoverà i certificati, in questo esempio verrà rinnovato ogni 12 giorni:

* */12 * * * /usr/bin/certbot renew >/dev/null 2>&1

A questo punto la configurazione è completata. Accedendo alla nostra applicazione non dovrebbe apparire nessun errore e il traffico sarà correttamente cifrato.

2 thoughts on “Installare Let’s Encrypt in CentOS 7

    1. Salve,
      grazie per avermelo segnalato, c’è stato un errore di inserimento, il comando è solo certbot. In realtà è necessario solo inserire questo comando, in quanto da prompt verrà chiesto per quale dominino generare il certificato.
      Aggiungendo i parametri che dice lei si bypassa il prompt di selezione.
      Grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *