Migrare un sito da http a https

12 Agosto 2019

Grandi novità per il mio blog, anche se molte non sono visibili. Tema nuovo, hosting nuovo e protocollo nuovo. Era un pò di tempo che volevo passare ad https ma non ne ho mai avuto il tempo; anche se, come vedrai, la procedura non è affatto lunga. Prima di tutto: Cos'è https? E' l'acronimo di HyperText Transfer Protocol over Secure Socket Layer ed è un protocollo di comunicazione tra dispositivi usato su internet. Permette la comunicazione sicura di dati in quanto essi vengono crittografati da un altro protocollo, chiamato SSL (Secure Sockets Layer). Oltre a questo, un sito che utilizza https dimostra al visitatore l'autenticità della pagina, proteggendolo da possibili frodi celate dietro siti o pagine falsificate. Oltre alla sicurezza e all'autorità del sito, il protocollo https è importante anche in ottica SEO (posizionamento nei motori di ricerca) in quanto viene usato come parametro positivo per l'indicizzazione da parte di Google e dagli altri principali motori di ricerca. Se si possiede un sito, come può essere il mio, personale o aziendale, conviene perdere mezz'ora e implementare questo protocollo. Ne trarremo solo beneficio.
Voglio partire subito con la procedura e non perdere altro tempo spiegando come funziona, perchè dovresti implementare https sul tuo sito ecc ecc...se hai cercato questa guida è perchè sai già di cosa stiamo parlando ma vuoi un aiuto per capire come farlo, iniziamo!

Requisiti

  • Nome a dominio valido, registrato e attivo
  • Hosting linux, con installato Apache Web Server
  • Accesso root al tuo hosting tramite SSH

Verificati i requisiti, collegati al server dove è ospitato il sito; sono solito usare ssh, l'importante è aprire una shell da remoto.

Abilitare il firewall


Il primo passo è abilitare il firewall al traffico entrante sulla porta del protocollo https, la 443, ma anche sulla porta 80 del buon vecchio http se parti da zero con la configurazione; per farlo lancia da terminale i seguenti comandi:

sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

Per verificare che tutto sia stato impostato correttamente verifica con il comando: sudo ufw status. Ti dovrebbe restituire qualcosa del tipo:

root@luca-blog:~# ufw status
Status: active

To                 Action     From
--                 ------     ----
OpenSSH            ALLOW      Anywhere
80                 ALLOW      Anywhere
443                ALLOW      Anywhere
OpenSSH (v6)       ALLOW      Anywhere (v6)
80 (v6)            ALLOW      Anywhere (v6)
443 (v6)           ALLOW      Anywhere (v6)


Gli strumenti Let's Encrypt e Certbot


Il rilascio di un certificato SSL è spesso a pagamento (). Fortunatamente Let's Encrypt fornisce GRATUITAMENTE il rilascio di certificati SSL e la EFF (Electronic Frontier Foundation) ha creato uno strumento chiamato Certbot il quale permette di creare il certificato, installarlo e configurare il web server tramite una comoda procedura guidata.
Sul sito web di Certbot c'è la possibilità di scegliere sistema operativo e web server del sistema sul quale è ospitato il nostro sito che vogliamo rendere sicuro; una volta selezionate le nostre preferenze verrà creata una guida personalizzata, che sintetizzo nel passaggio successivo.

Installazione di Let's Encrypt


Prima di installare Let's Encrypt verifica che tutte le dipendenze siano soddisfatte: se non è già installato, è necessario installare il pacchetto bc tramite il comando:

sudo apt-get install bc

Ora devi clonare Let's Encrypt sul server, per farlo:

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Attenzione - Per completare con successo la procedura, l'indirizzo IP del tuo server deve puntare al nome a dominio per il quale vuoi creare il certificato.

Per verificare da terminale lancia:

dig +short example.com

Dove example.com è il nome del tuo sito. Il comando dovrebbe restituire l'indirizzo IP del tuo server es: 183.166.28.11. Se non fosse così devi sistemare i name server che puntano al tuo sito o il pannello DNS del tuo hosting provider.

Creare ed installare il certificato con Certbot


Questi passaggi sono presi dalla guida del sito ufficiale di Certbot, ma per completezza li riporto qui.
Il primo passo è installare Certbot (dai?!) e per farlo devi aggiungere il repository alla lista:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update


Ora puoi installare Certbot semplicemente lanciando il comando apt-get. Nell'esempio mostro l'installazione del pacchetto specifico per Apache. Se hai un altro web server dovrai installare quello adatto.

sudo apt-get install certbot python-certbot-apache

Dopo averlo installato puoi lanciare Certbot con il comando sudo certbot --apache il quale avvierà la procedura guidata per la creazione del certificato SSL e soprattutto della configurazione del web server ad accettare connessioni sulla porta 443 del protocollo https. Potrai anche decidere come gestire il redirect http - https degli URL; se vuoi applicare il certificato SSL ad un sito già attivo da tempo, come il mio, consiglio di gestire automaticamente il redirect, così anche i link già indicizzati che presentano http, verranno automaticamente dirottati su https.

Puoi verificare il risultato della procedura inserendo il nome del tuo sito a questo indirizzo: https://www.ssllabs.com/ssltest/. E' un'applicazione che analizza la configurazione SSL di un server e fornisce una diagnosi molto dettagliata, dove puoi vedere se c'è qualcosa che non va, oppure semplicemente migliorare ulteriormente la sicurezza del tuo sito.


X
THE END