Vi presento oggi il servizio Let’s encrypt che permette di creare un certificato valido gratis.
Questo significa che il vostro sito potrebbe essere utilizzato in https. Il protocollo https oltre che garantire all’utente di utilizzare il sito vero, garantisce che le informazioni vengano crittografatte rendendo sicuro eventuali accessi con password.
Let’s encrypt è un progetto spinto da Mozilla e supportato dai maggiori player web. L’unica cosa che dovete fare è possedere l’accesso completo dove è installato il vostro sito blog.
Vi spiegherò come generare un certificato https gratis manualmente.
Installazione di Certbot
Certbot è un programma che permette di mantenere e automatizzare una serie di attività per la generazione e il rinnovo dei certificati.
Nell’installazione tramite pacchetti il pacchetto è distribuito come certbot, mentre eseguendo un installazione manuale usando per esempio una versione CentOS 5 o 6 effettuiamo tutti i passi di installazione manuale, il programma si chiama letsencrypt-auto
, ma è un alias di certbot.
Per prima cosa installiamo git e python.
- CentOS ed altre derivate Red Hat:
sudo yum install git python -y
- derivate Debian:
sudo apt-get install git python -y
Con Git scarichiamo i sorgenti del programma con il seguente comando:
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
I sorgenti li avremo scaricati nella cartella /opt/letsencrypt
.
Per verificare che sia funzionante, lanciamo:
/opt/letsencrypt/letsencrypt-auto --version
Il programma certbot sarà eseguibile direttamente se installato con un pacchetto ma eseguendo il download manuale lo useremo con la nomenclatura. /opt/letsencrypt/letsencrypt-auto
A questo punto per generare il certificato possiamo lanciare un comando simile a questo:
Generazione del certificato HTTPS gratis
A questo punto per generare il certificato lanciare un comando similare:
sudo /opt/letsencrypt/letsencrypt-auto –email mioindirizzo@gmail.com –agree-tos certonly –webroot -w /var/www/semprefacile.it -d semprefacile.it -d www.semprefacile.it
--email mioindirizzo@gmail.com
: è l’indirizzo email che verrà usato per le varie comunicazioni di servizio, fra cui la scadenza del certificato. Che va rinnovato ogni 90 giorni.--agree-tos
: per accettare i termini del serviziocertonly
: si desidera solo creare un certificato HTTPS, l’installazione su apache viene fatta manulamente.--webroot
: identifica il metodo di verifica dell’identità-w /var/www/semprefacile.it
: deve essere sostituito con il percorso DocumentRoot ovvero il percorso di base di apache.-d semprefacile.it -d www.semprefacile.it
: indica i domini per i quali si sta richiedendo il certificato. È corretto richiedere sia iniziante per www, che senza.
Se tutto va bene il certificato HTTPS viene creato in una sottocartella di /etc/letsencrypt/live/
che porta il nome del dominio che abbiamo indicato nella riga di comando. quindi nel nostro caso sarà
/etc/letsencrypt/live/semprefacile.it/
Dentro questa cartella troverai i 4 file del certificato!
Installazione HTTPS in apache
Per prima cosa devi installare le librerie per poter abilitare ssh su apache. Il modulo è mod_ssl.
- per CentOS:
sudo yum install openssl mod_ssl -y
- per Ubuntu:
sudo apt-get install openssl mod_ssl -y
Riavviare il servizio per rendere effettive le modifiche
- per CentOS:
sudo service httpd restart
- per Ubuntu:
sudo restart apache2
Installazione del certificato
Se apache non ha configurati dei virtualhost puoi cambiare la configurazione direttamente sul virtualhost di default
- per CentOS:
/etc/httpd/ssl.conf
- per Ubuntu:
/etc/apache2/sites-available/default-ssl
Edita il file e modifica le righe introducendo le seguenti modifiche:
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
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-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-CAMELLIA128-SHA256:ECDHE-ECDSA-CAMELLIA128-SHA256:ECDHE-RSA-CAMELLIA256-SHA384:ECDHE-ECDSA-CAMELLIA256-SHA384:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-CAMELLIA256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:CAMELLIA128-SHA:CAMELLIA256-SHA:DHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA
SSLCertificateKeyFile /etc/letsencrypt/live/semprefacile.it/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/semprefacile.it/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/semprefacile.it/chain.pem
Rendere effettive le modifiche ricaricando la configurazione:
- per CentOS:
sudo service httpd reload
- per Ubuntu:
sudo reload apache2
Test Funzionamento SSL
Adesso proviamo ad aprire il sito con indirizzo https e noteremo che il sito è correttamente impostato con un certificato valido.
Rinnovo del certificato
I certificati HTTPS di Let’s Encrypt hanno una durata abbastanza corta: di solo 90 giorni. Questo significa che entro la scadenza vanno rinnovati. (possono essere automatizzati un crontab)
Per rinnovare bisogna eseguire un comando del tipo
- per CentOS:
sudo/opt/letsencrypt/letsencrypt-auto renew && sudo service httpd reload
- per Ubuntu:
sudo/opt/letsencrypt/letsencrypt-auto renew && sudo reload apache2
Se però l’operazione vuole essere svolta prima molto prima della scadenza possiamo utilizzare il parametro --force-renew
per anticipare la generazione del certificato.
- per CentOS:
sudo/opt/letsencrypt/letsencrypt-auto renew --force-renew && sudo service httpd reload
- per Ubuntu:
sudo/opt/letsencrypt/letsencrypt-auto renew --force-renew && sudo reload apache2
Alla fine dell’esecuzione si legge Congratulations, all renewals succeeded.
, allora l’operazione si è conclusa correttamente.
Possiamo ispezionare il certificato per vedere se dopo i comandi sotto tali certificati sono con una nuova data di scadenza.
(per visualizzare il certificato se usi chrome puoi aprire gli strumenti per gli sviluppatori e security, poi viasualizza certificato)
Per schedulate un crontab si potrebbe inserire un comando andando a dare il comando di edit crontab-e e poi inserire una nuova riga di questo tipo.
30 1 1 2,4,6,8,10,12 * /opt/letsencrypt/letsencrypt-auto renew –force-renew && sudo service httpd reload
Ogni due mesi il primo del mese all’1:30 di notte eseguiremo il rinnovo del certificato.
Test sicurezza SSL
Abbiamo eseguito un test sul servizio gratuito SSL Server Test e il certificato installato viene valutato con un rank A.