Il proprio sito su HTTPS – Gratis

Prefazione

È ormai dal 2018 che i browser associano ai siti che non usano il protocollo HTTPS, la minacciosa etichetta “Non sicuro”. In realtà, il terrificante appellativo dice semplicemente che i dati che passano attraverso il sito, transitano non crittografati e quindi non protetti.

Per noi che abbiamo un semplice blog, avere un sito che non cifra i contenuti, non costituisce, un problema ma lo spauracchio rappresentato dal “Non sicuro”, potrebbe scoraggiare gli ospiti dal visitare il nostro sito.

La soluzione a questo problema è l’utilizzo del protocollo https. Per poter utilizzare il protocollo https è necessario essere in possesso di un certificato TSL/SSL.

Per ottenere un certificato TSL/SSL, ci si deve rivolgere ad una Certification Authority. L’emissione ed il mantenimento del certificato, in generale, prevede un costo. Gli Hosting Providers, che ospitano i nostri siti, attualmente offrono soluzioni “tutto incluso”, che comprendono il certificato TSL/SSL ed utilizzano il protocollo https.

Per chi, come me, utilizza un proprio server, io utilizzo un VPS di OVH, in cui ho installato Ubuntu, è obbligatorio reperire il certificato e configurarne l’utilizzo sul proprio web server.

Con Let’s Encrypt, una cerification authority che fornice certificati X.509 gratuitamente, è possibile attivare facilmente l’utilizzo del protocollo https per il nostro sito.

Nel mio server ho installato Ubuntu 18.04, quindi le indicazioni che darò di seguito, sono per Ubuntu e web server Apache.

Let’s Encrypt, ci aiuta ad ottenere ed utilizzare un certificato, fornendoci un client, il cui nome è Certbot, che si interfaccia ad Apache, richiede il certificato, lo scarica sul nostro computer e ne configura l’utilizzo.

Installare Certbot

La prima cosa da fare per utilizzare Let’s Encrypt, è installare Certbot

Aggiorniamo l’elenco dei pacchetti:

# sudo apt update

Poi, aggiungiamo il repository ufficiale di Cerbot per ottenere i pacchetti più aggiornati:

# sudo add-apt-repository ppa:certbot/certbot

In conclusione, installiamo il pacchetto Certbot per Apache:

# sudo apt install python-certbot-apache

Configuriamo Firewall (ufw)

Se abbiamo il firewall ufw è abilitato è necessario creare una nuova regola per consentire il traffico HTTPS.

#  sudo ufw allow 'Apache Full'

Otteniamo il certificato SSL

#   sudo certbot --apache

Questo comando lancia il client Certbot che contatterà le risorse Let’s Encrypt per ottenere un certificato per uno dei Virtual Hosts configurati nel nostro server.
Certbot ci guiderà nella scelta del Virtual Host per il quale richiedere il certificato e delle opzioni per la sua configurazione.
A conclusione delle operazioni per l’ottenimento del certificato, verranno generati i files necessari per il suo utilizzo e l’abilitazione all’uso di https.

# SSLCertificateFile/etc/letsencrypt/live/www.miosito.ext/cert.pem
# SSLCertificateKeyFile/etc/letsencrypt/live/www.miosito.ext/privkey.pem
# SSLCertificateChainFile/etc/letsencrypt/live/www.miosito.ext/chain.pem 

Perfezionamento configurazione Apache

Oltre che la generazione dei file del certificato, Certbot, inserisce tra i sites-available di Apache, e lo abilita (ponendolo quindi tra i sites-enabled), un file di configurazione che ha lo stesso nome del file di configurazione del Virtual Host per il quale è stato richiesto il certificato, con l’aggiunta del suffisso “-le-ssl“.
Questo file contiene la configurazione per l’ascolto della porta 443 di https e l’utilizzo dei file chiave e certificato necessari.

Io preferisco disabilitare e cancellare il file di configurazione SSL generato da Certbot e modificare il file di configurazione originario del Virtual Host in modo da avere un unico file sia per la configurazione dell’ascolto sulla porta 443 ed il redirect verso https quando la chiamata arriva dalla porta 80 di http.

<VirtualHost *:80>

    ServerName www.miosito.ext
Redirect permanent / https://www.miosito.ext/ </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@miosito.ex DocumentRoot /var/www/www.miosito.ext/ <Directory /var/www/www.miosito.ext/>
   Options FollowSymLinks Indexes   AllowOverride All  </Directory> SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.miosito.ext/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.miosito.ext/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.miosito.ext/chain.pem ServerName www.miosito.ext   #DocumentIndex Default.aspx DirectoryIndex index.php ErrorLog ${APACHE_LOG_DIR}/error.lo CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

Terminata questa configurazione il nostro sito sarà esposto su protocollo https e il messaggio “Non sicuro” indicato dal Browser non comparirà più, offrendo una maggior percezione di sicurezza ai nostri visitatori.