Come creare e installare certificato ssl gratis

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 Hatsudo 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 servizio
  • certonly: 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.