• seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

Come installare Let's Encrypt in Apache, con sistema operativo CentOS

di :: 03 marzo 2020
Come installare Let's Encrypt in Apache, con sistema operativo CentOS

Oggi tutti i siti web devono disporre di un certificato SSL.

SSL, Secure Sockets Layer, è un protocollo che consente una trasmissione dei dati tra client (il browser) e server (il sito web) in modo sicuro e protetto.

Ci accorgiamo che un sito dispone di un certificato SSL dal lucchetto che appare nella barra degli indirizzi del browser

Come installare Let's Encrypt in Apache, con sistema operativo CentOS

In questo articolo vediamo vediamo la procedura di installazione di un certificato SSL fornito da Let's Encrypt, utilizzando Apache come server web e sistema operativo CentOS 7.

Questo articolo è quindi dedicato a chi gestisce un sito web su un proprio server dedicato, quindi non in hosting.

I certificati costano... anzi costavano. Con Let’s Encrypt non dobbiamo più pagare per avere un certificato per il nostro sito web.

Let’s Encrypt è una autorità di certificazione completamente gratuita sviluppata dalla società californiana Internet Security Research Group (ISRG) che ha come obiettivo quello di rendere i certificati di sicurezza del livello di trasporto disponibili gratuitamente, ed in modo automatizzato. Vediamo come.

Innanzitutto, vediamo rapidamente alcune operazioni preliminare, e cioè l'installazione di Apache e la sua configurazione per erogare siti sotto https cioè con certificato.

Aggiornamento del sistema CentOS

Procediamo innanzitutto con l'aggiornamento del nostro sistema operativo

# yum update

Installazione di Apache web server

Se non l'avete ancora installato, procedete all'installazione del server web Apache

# yum install httpd

Installazione di mod_ssl su Apache

Per poter erogare i siti sotto https, Apache necessita dell'installazione del modulo mod_ssl

# yum install mod_ssl

Configurazione di Apache

Il nostro sito lo collochiamo sotto questa directory: /var/www/html/miosito

Creiamo quindi la directory sul server

# mkdir /var/www/html/miosito

Nel file di configurazione dei virtual host di Apache "vhost.conf", occorre definire il blocco di codice relativo al sito in questione.

Editiamo quindi il file vhost.conf, utilizzando ad esempio l'editor "vi"

# vi /etc/httpd/conf.d/vhost.conf

Ipotizzando che il dominio con cui vogliamo visualizzare il nostro sito sia "www.webarea.it", creiamo questa configurazione.

<VirtualHost *:443>
	DocumentRoot /var/www/html/miosito
	ServerName webarea.it
	ServerAlias www.webarea.it
	CustomLog logs/site_access_log common
	ErrorLog logs/site_error_log
</VirtualHost>

E' una configurazione molto semplice, in cui diciamo ad Apache che il nostro sito web dovrà risponde all'indirizzo webarea.it e www.webarea.it, e di rispondere sulla porta 443 utilizzata per la navigazone in https,  invece che sulla classica porta 80. Ricordatevi di aprire la porta 443 sul vostro firewall !

In questo articolo non spiegheremo come si configura Apache, abbiamo già dedicato altri articoli sull'argomento.

Passiamo finalmente a Let’s Encrypt

5: installazione di Let's Encrypt

Abbiamo bisogno di usare, se non è ancora presente, la repository EPEL

# yum install epel-release

Installiamo anche yum-utils:

# yum install yum-utils

Infine installiamo certbot per Apache, cioè Let's Encrypt.

# yum install certbot python2-certbot-apache

Bene, Let's Encrypt è adesso installato! Vediamo come utilizzarlo

Installazione automatica del certificato ssl

Digita il comando certbot --apache e segui le istruzioni

# certbot --apache

Certbot cercherà tutti i virtual host presenti nel file "vhost.conf" (quindi se avete più domini, prenderà in considerazione tutti i domini ed eventuali alias indicati nel file vhost.conf) e vi chiederà su quale attivare HTTPS e quindi su quali creare un certificato.

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: webarea.it
2: www.webarea.it
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel):

Seleziona i domini su cui vuoi installare il certificato, indicando i numeri associati ai domini divisi da una virgola. Nel nostro esempio: 1,2

Se vuoi installare il certificato su tutti i domini, non indicare nulla e prosegui.

A questo punto verrà generato e installato il certificato.

Seguite quanto indicato a video... ad un certo punto verrà chiesto quanto segue:

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):

In poche parole, viene chiesto se impostare il redirect automatico delle richieste da HTTP a HTTPS.

Se avete già configurato voi "a mano" questo redirect, ad esempio nel file vhost.conf, allora digitate "1".

In caso contrario, digitate "2" e lasciate che sia certbot a configurare tutto in automatico.

Se tutto è stato eseguito correttamente apparirà un messaggio simile a questo:

Congratulations! You have successfully enabled https://test.com
 
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=webarea.it
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/webarea.it/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/webarea.it/privkey.pem
Your cert will expire on 2020-06-02. 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 

Certbot ti sta dicendo che tutto è andato bene, e che, se vuoi verificare la validità del certificato, potrai farlo aprendo la url
https://www.ssllabs.com/ssltest/analyze.html?d=webarea.it

I certificati sono stati installati sul nostro server nella cartella "/etc/letsencrypt/live"

Per curiosità, buttiamo un occhio in questa directory

Entriamo nella cartella

# cd /etc/letsencrypt/live

All'interno troveremo la directory relativa al dominio del nostro sito

# ls -l
total 8
-rw-r--r-- 1 root root  740 Dec 18 13:42 README
drwxr-xr-x 2 root root 4096 Jan 13 15:17 www.webarea.it

Entriamo nella cartella www.webarea.it

# cd www.webarea.it

Al suo interno c'è il certificato fullchain.pem (è presente anche in altri formati: cert.pem e chain.pem) e la chiave privata privkey.pem

[root@agr1 www.agronline.it]# ls -l
total 4
lrwxrwxrwx 1 root root  40 Jan 13 15:17 cert.pem -> ../../archive/www.webarea.it/cert4.pem
lrwxrwxrwx 1 root root  41 Jan 13 15:17 chain.pem -> ../../archive/www.webarea.it/chain4.pem
lrwxrwxrwx 1 root root  45 Jan 13 15:17 fullchain.pem -> ../../archive/www.webarea.it/fullchain4.pem
lrwxrwxrwx 1 root root  43 Jan 13 15:17 privkey.pem -> ../../archive/www.webarea.it/privkey4.pem
-rw-r--r-- 1 root root 692 Jan  8 10:19 README

Installazione di singoli certificati

Nel paragrafo precedente abbiamo lasciato a certbot di verificare i domini presenti nel file vhost.conf.

Tuttavia, per complettezza di spiegazione, nulla ci vieta di installarle il certificato su un solo dominio.
In tal caso utilizziamo certbot con l'opzione -d seguita dal dominio.

certbot --apache -d pippo.it

O se vogliamo installare il certificato su più domini:

certbot --apache -d pippo.itcertbot --apache -d pippo.it -d pluto.it

Detto questo, io preferisco lasciare a certbot di operare in automatico, come abbiamo visto nel paragrafo precedente.

Verifica della corretta installazione del certificato

Abbiamo già detto che possiamo verificare la corretta configurazione del certificato aprendo la url

https://www.ssllabs.com/ssltest/analyze.html?d=webarea.it

dove, dopo il parametro "d" indichiamo il dominio che vogliamo analizzare.

La procedura di verifica impiega alcuni minuti, con alcuni refresh della pagina. Se tutto è andato bene, il risultato finale sarà una schermata simile a questa

report letsencrypt

Oltre a questa verifica, dobbiamo controllare che il nostro server web risponda correttamente

Apriamo il browser e digitiamo l'indirizzo del nostro sito web: https://www.webarea.it

Se tutto è andato come deve, apparirà il lucchetto al fianco dell'indirizzo, ad indicare che il nostro server è protetto dal certificato SSL.

Scadenza del certificato

Un certificato gratuito Let's encrypt scade dopo 90 giorni. ... cosa devo fare quindi dopo 90 giorni? Devi rinnovarlo.

Rinnovo del certificato

Trascorsi i 90 devi rinnovare il certificato, e per farlo devi gitare il seguente comando, e seguirne le istruzioni

certbot renew

Se vuoi, puoi anche solo simulare la procedura di rinnovo, così

certbot renew --dry-run

Tu dirai: "devo mettermi un appunto e dopo 90 giorni rinnovare il certificato... che @@ !!"

E pensa che se invece di avere un solo dominio ne hai molti.

Ma c'è una soluzione: l'auto rinnovo dei certificati.

Auto rinnovo dei certificati

Esista una via molto agevole per rinnovare a scadenza i certificati, senza dover far nulla: scheduliamo una attività di rinnovo automatico. 

Modifichiamo crontab

# crontab -e

Aperto crontab, digitiamo "i" ed aggiungiamo questa riga

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

Digitiamo quindi il tasco "Esc" seguito da ":wq" per salvare la modifica.

Così facendo abbiamo schedulato una attività che verrà eseguita alle ore 0.00 e 12.00, tutti i giorni: in questo orario verrà automaticamente chiamato il comando "certbot renew" che procederà al rinnovo in automatico del certificato (o dei certificati).

Conoscere i certificati installati

Per avere la lista dei certificati installati, con relativa scadenza, utilizziamo il seguente comando:

# certbot certificates

Il risultato sarà simile a questo

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: www.webarea.it
    Domains: webarea.it
    Expiry Date: 2020-06-02 13:17:03+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/www.webarea.it/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/www.webarea.it/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Rimuovere un certificato

Per rimuovere il certificato di uno specifico dominio, digitiamo quanto segue e seguiamo le istruzioni

# certbot delete --cert-name www.webarea.it

Promemoria certificati in scadenza

In prossimità delle scadenze, Let's Encrypt ci invia un promemoria via email, con oggetto "Let's Encrypt certificate expiration notice for domain xxxx", dove al posto di xxxx avremo il nome del dominio in scadenza.

Il contenuto sarà simile a questo:

Hello,

Your certificate (or certificates) for the names listed below will expire in 10 days (on 17 Mar 20 13:35 +0000).
Please make sure to renew your certificate before then, or visitors to your website will encounter errors.

We recommend renewing certificates automatically when they have a third of their
total lifetime left. For Let's Encrypt's current 90-day certificates, that means
renewing 30 days before expiration. See
https://letsencrypt.org/docs/integration-guide/ for details.

www.webarea.it
..............

Conclusioni

Come abbiamo visto, la proceura di installazione di Let's Encrypt è molto agevole e difficimente incorrerete in problematiche. Ringraziamo quindi Let's Encrypt per poter disporre di certificati per i nostri domini, senza dover pagare nulla.

Si rimanda alla documentazione di Certbot per approfondimenti.

Potrebbe interessarti

Approfondimenti

 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

 
 
 
x

ATTENZIONE