Il certificato Let’s Encrypt

Il certificato Let’s Encrypt

Parliamo del certificato di Let’s Encrypt.

Sarò ancora meno breve dell’altro post, è più lungo da spiegare che da implementare, per fare il tutto ci voglio dai 3 ai 5 minuti, ma voi prendetevi tutto il tempo che vi pare, nessuno si permetterà mai di darvi un voto

Si tratta di un certificato DV (Domain Validation), Il fatto che sia gratuito, non vuol dire che non sia affidabile, l’Autority che lo emette è registrata in tutti i browser tra gli enti di certificazione attendibili.
Abbiamo già spiegato quali sono i vari tipi di certificato nell’articolo Principali tipi di certificati

Se avete un hosting su un qualsiasi provider attivando il dominio verrà attivato su di esso anche il certificato gratuito Let’s Encrypt, in automatico o facendone richiesta al provider.

Parliamo invece di come ottenere ed installare il nostro certificato gratuito sui nostri domini su un server dedicato.

Premessa, dovete avere un server in dedicato, cioè un server su cui avete un accesso di tipo amministrativo, per chi conosce linux (utente root o utente inserito nella lista dei sudoers).

Per questa esposizione assumerò che il server sia Linux e che l’utente sia root o un utente con privilegi amministrativi (vedi sudoers), la differenza tra root e sudoers e che i comandi vanno preceduti da “sudo o su”, questo comando fa sì che l’utente di fatto agisca con i privilegi di root, difatti ad ogni comando verrà chiesta la password di root, se non volete ripetere ad ogni comando l’immissione della password digitate

sudo su

o semplicemente

su

e premete invio, quindi alla richiesta inserite la password di root, sarete diventati di fatto utente root finché non verrà chiusa la sessione SSH o di Putty.

Per l’installazione del certificato abbiamo bisogno di un piccolo programma che si interfaccia con Let’s Encrypt: Certbot.
Certbot si trova nel repository epel (directory pubbliche per la distribuzione di applicativi linux)
.
Se non avete epel installato, tra l’altro su epel esistono migliaia di applicazioni che possono servire, bisogna installare il repository, quindi sulla nostra interfaccia SSH o Putty digitiamo questo comando:

yum install epel-release -y

A questo punto potremo scaricare e installare in automatico Certbot, digitiamo questa riga di comando:

yum install certbot

aspettate che finisca l’installazione e quindi verificate che sia attivo con il comando:

certbot –version

Adesso possiamo eseguire certbot per scaricare e installare il nostro certificato in automatico, per gli esempi ho utilizzato un dominio dismesso che uso per fare test voi dovete sostituirlo con il vostro, gli asterischi servono ad evitare che cliccandovi sopra il brosew tenti di aprire un dominio inesistente vanno quindi sostituiti con il punto, www*nomedominio*it.

Quindi digitate, ho meglio, vi consiglio di copiarlo su notepad++, apportare le opportune modifiche, quindi ricopiarlo e incollarlo sulla riga di comando di SSH/Putty:

certbot –email indirizzo@email*ext –agree-tos certonly –webroot -w /home/www*nomedominio*it/public_html -d nomedominio*it -d www*nomedominio*it

Attenzione si tratta di una unica riga di commando.
Analiziamo le varie parti del comando:

(-–email indirizzo@email.ext) comunica l’indirizzo email che volete usare affinché Let’s Encrypt possa inviarvi comunicazioni amministrative oltre che per convalidare l’adesione cliccando sull’indirizzo nella email che vi è stata inviata quanto avete lanciato certbot, quindi sostituite l’indirizzo con il vostro.

(–agree-tos certonly) chiediamo che venga solo generato il certificate e che ci venga recapitato.

(–webroot -w /home/www*nomedominio*it/public_html) comunichiamo la directory su cui si trova il codice del nostro sito, che può seere un’installazione di wordpress, un sito bootstrap o un negozio prestashop ecc…, normalmente le directory dei miei domini hanno la stessa denominazione dell’url anche sul disco

(-d nomedominio*it) e (-d www*nomedominio*it) chiediamo che il certificato sia valido sia per il dominio principale che per il sottodominio relativo www, sostituite il nome del dominio e sottodominio con i vostri.

Ricordatevi che gli asterischi vanno sostituiti con il punto

Ok dopo aver incollato la riga di comando descritta premete invio, aspettate un po’ alla fine certbot risponderà con questo messaggio:

– Congratulations! Your certificate and chain have been saved at:

/etc/letsencrypt/live/tantavogliadi.it/fullchain.pem

Your key file has been saved at:

/etc/letsencrypt/live/tantavogliadi.it/privkey.pem

Your cert will expire on 2018-03-08. To obtain a new or tweaked

version of this certificate in the future, simply run certbot

again. To non-interactively renew *all* of your certificates, run

“certbot renew”

– Your account credentials have been saved in your Certbot

configuration directory at /etc/letsencrypt. You should make a

secure backup of this folder now. This configuration directory will

also contain certificates and private keys obtained by Certbot so

making regular backups of this folder is ideal.

– If you like Certbot, please consider supporting our work by:

In pratica nella vostra directory /home/www*nomedominio*it/public_html troverete una nuova directory nascosta .well-known servirà affinché Let’s Encrypt possa verificare periodicamente che il vostro dominio effettivamente esiste e continua ad esistere, quindi scaricherà la chiave pubblica del vostro certificato, che confronterà con la copia registrata per verificare che il certificato esistente sia ancora valido.

Il certificato, chiave pubblica e privata ecc.. e stato salvato nella directory

/etc/letsencrypt/nomedominio*it/

I file che troverete nella directory sono:

privkey.pem: costituisce la chiave privata del server

cert.pem: è il certificato vero e proprio, che sarà inviato al browser dei visitatori

chain.pem: contiene i certificati delle Certification Authority (CA) che hanno rilasciato il certificato

fullchain.pem: è la concatenzione di cert.pem + chain.pem.

A questo punto abbiamo disponibile il nostro certificato gratuito pronto da attivare, la seguente procedura iè valida per attivare sia il certificato che abbiamo ottenuto sia per qualsiasi altro certificato, ho assunto che il software server sia Apache 2.4.x.

Dovrete aprire e modificare il file di configurazione del vostro dominio nella directory conf di apache, normalmente io creo sempre un file di configurazione per ogni dominio, in modo da evitare confusione quando mi serve modificare alcune feature per un determinato dominio, ad esempio  nomedominio*it .conf, nel mio caso quindi si trova nella directory /etc/conf/nomedominio.it.conf,  inoltre la configurazione esposta, per motivi di sicurezza limita la lista dei protocolli esclusivamente a TLSv1, TLSv1.1 e TLSv1.2, ho inserito un rewrite che qualsiasi chiamata al dominio con http:// venga reindirizata al domino https://  in questo modo il dominio non potrà essere utilizzato su vecchie versioni di android o su versioni di windows xp e precedenti, se ancora ne esistono.

Quindi apriamo il nostro file di configurazione con l’editor di linux, io preferisco usare nano perché è il più semplice da utilizzare da SSH, se non avete installato nato nano nella vostra versione è sufficiente digitare:

yum install nano

quindi passiamo ad editare il nostro file:

nano /etc/conf/nomedominio.it.conf

vedremo il contenuto del file, raggiungiamo la sezione che somiglia a questa:

<VirtualHost 94.23.249.171:443>
ServerName www*nomedominio*it

DocumentRoot /home/www*nomedominio*it /public_html

Seguite da altre righe

Quindi incolliamo le seguenti righe tra ServerName e DocumentRoot

SSLEngine on

SSLCertificateKeyFile /etc/letsencrypt/live/nomedominio*it/privkey.pem

SSLCertificateFile /etc/letsencrypt/live/nomedominio*it /cert.pem

SSLCertificateChainFile /etc/letsencrypt/live/nomedominio*it/chain.pem

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GC$

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

SSLHonorCipherOrder Off

Header always set Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”

Header always set X-Content-Type-Options nosniff

SSLCompression off

Alla fine avremo il seguente risultato:

<VirtualHost 94.23.249.171:443>
ServerName www*nomedominio*it

SSLEngine on

SSLCertificateKeyFile /etc/letsencrypt/live/nomedominio*it/privkey.pem

SSLCertificateFile /etc/letsencrypt/live/nomedominio*it /cert.pem

SSLCertificateChainFile /etc/letsencrypt/live/nomedominio*it/chain.pem

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GC$

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

SSLHonorCipherOrder Off

Header always set Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”

Header always set X-Content-Type-Options nosniff

SSLCompression off

DocumentRoot /home/www*nomedominio*it /public_html

Seguite da altre righe

 

Lascia un commento

In questo sito Web utilizziamo strumenti di prima o di terzi che memorizzano piccoli file (cookie) sul dispositivo. I cookie vengono normalmente utilizzati per consentire al sito di funzionare correttamente (cookie tecnici), per generare report di navigazione (cookie statistici) e per pubblicizzare adeguatamente i nostri servizi / prodotti (cookie di profilazione). Possiamo utilizzare direttamente i cookie tecnici, ma hai il diritto di scegliere se abilitare o meno i cookie statistici e di profilazione.
Abilitando questi cookie, ci aiuti a offrirti un’esperienza migliore.
Per saperne di più visita la nostra Informativa Cookie e Privacy.

Alcuni contenuti o funzionalità qui non sono disponibili a causa delle tue preferenze sui cookie!

Ciò accade perché la funzionalità / i contenuti contrassegnati come “% SERVICE_NAME%” utilizzano i cookie che hai scelto di mantenere disattivati. Per visualizzare questo contenuto o utilizzare questa funzionalità, si prega di abilitare i cookie: fai clic qui per aprire le tue preferenze sui cookie.