Il momento migliore per migrare il proprio sito ad HTTPS è... ora! Se ancora utilizzi HTTP per il tuo dominio, devi agire immediatamente! Il primo passo consiste nell'ottenere un certificato gratuito e configurare a dovere il webserver ma, una volta aver verificato che tutto funzioni via HTTPS, è altrettanto importate impostare un redirect da HTTP a HTTPS: in questo modo, ogni volta che un utente richiederà una pagina tramite HTTP, verrà rimandato in modo trasparente all'equivalente HTTPS. Inoltre, questo redirect da HTTP a HTTPS informerà Google e gli altri motori di ricerca che il sito utilizza il protocollo sicuro, evitando la penalizzazione per i siti HTTP nei risultati delle ricerche (SERP) e facendo in modo che l'indirizzo proposto agli utenti sia immediatamente in HTTPS, trasmettendo maggiore autorevolezza. Vediamo allora come procedere per configurare il webserver (Apache HTTP Server o Nginx per Ubuntu Server, CentOS o Windows) con un redirect da HTTP verso HTTPS
nota: nel resto dell'articolo ci riferiremo al programma "Apache HTTP Server" chiamandolo (impropriamente) solo "Apache", per brevità e per conformarci al nome usato nel quotidiano.
La difficoltà principale nel configurare un redirect da HTTP a HTTPS con Apache o Nginx sta nel fatto che gli URL possono essere estremamente complessi, ed è importante che il redirect li intercetti tutti a prescindere dal sito specifico. Un esempio di URL ragionevolmente articolato è:
http://www.sub1.sub2.dominio.it/cartella/file.html?param1=aaa+aaa+%3F+aaa¶m2=bbb+bbb+%3F+bbb#ancora1
Ora: dobbiamo fare in modo che anche gli URL di questo tipo siano gestiti correttamente e ridirezionati da HTTP a HTTPS.
Prima di cominciare: Webserver, HTTPS ed eliminare HTTP
Prima di implementare la configurazione proposta di seguito dobbiamo accertarci di aver già installato e configurato il webserver (Apache oppure Nginx) sul nostro PC o server. Per la guida:
» Leggi: Installare e configurare un server web: La Grande Guida ad Apache, PHP, MySQL su Windows e Linux
Completata l'installazione del webserver, dobbiamo fare in modo che il sito risponda via HTTPS. Le istruzioni sono qui:
Una volta che il sito funziona correttamente via HTTPS, procediamo ad eliminare il virtual host HTTP preesistente relativo al sito che stiamo portando in HTTPS. Spulciamo i file di configurazione del webserver ed eliminiamo i blocchi simili a questi:
Apache:
<VirtualHost *:80>
ServerName miosito.com
...
Nginx:
server {
listen 80;
server_name miosito.com;
...
Riavviamo il servizio e verifichiamo puntualmente che il sito non risponda più via HTTP aprendolo tramite browser web come http://miosito.com
(notate l'assenza della "s" finale in "http")
Ripetiamo la prova con https://miosito.com
(questa volta con la "s" finale in "http") ed assicuriamoci che la versione sicura continui ad aprirsi correttamente.
Redirect da HTTP a HTTPS con Apache
Per implementare il redirect da HTTP verso HTTPS con Apache utilizzeremo il modulo chiamato mod_rewrite. Attiviamolo seguendo questa procedura:
» Leggi: Installare e attivare mod_rewrite su Ubuntu Server, CentOS o Windows (guida Apache)
Ora possiamo implementare il redirect da HTTP a HTTPS tramite il singolo comando concatenato proposto di seguito. Prima di lanciarlo, impartiamo sudo -s
per ottenere i privilegi di root, poi:
-
Ubuntu:
export MIO_DOMINIO="turbolab.it" && curl -o "/etc/apache2/sites-available/${MIO_DOMINIO}-http.conf" https://turbolab.it/scarica/205 && sed -i -e "s/miosito.com/${MIO_DOMINIO}/g" "/etc/apache2/sites-available/${MIO_DOMINIO}-http.conf" && cat "/etc/apache2/sites-available/${MIO_DOMINIO}-http.conf" && a2ensite "${MIO_DOMINIO}-http.conf" && systemctl restart apache2
-
CentOS:
export MIO_DOMINIO="turbolab.it" && curl -o "/etc/httpd/conf.d/${MIO_DOMINIO}-http.conf" https://turbolab.it/scarica/205 && sed -i -e "s/miosito.com/${MIO_DOMINIO}/g" "/etc/httpd/conf.d/${MIO_DOMINIO}-http.conf" && cat "/etc/httpd/conf.d/${MIO_DOMINIO}-http.conf" && systemctl restart httpd
Come unica attenzione, ricordate di valorizzare opportunamente la variabile MIO_DOMINIO
all'inizio con il nome a dominio per il quale stiamo impostando il redirect da HTTP ad HTTPS.
Provate ora ad aprire il vostro sito via http://
. Dovreste essere rimandati automaticamente all'indirizzo https://
corrispondente. Se tutto funziona correttamente, avete concluso
Se invece state lavorando con Apache su Windows oppure preferite svolgere l'operazione manualmente, iniziate scaricando questo file:
» Download: Template redirect HTTP-HTTPS Apache
Salvatelo, assegnandogli un nome a piacere (ma mantenendo l'estensione .conf
!), in una delle cartelle dalle quali Apache carica automaticamente le configurazioni, ad esempio:
-
Windows:
C:\Program Files\Apache\conf\vhosts\miosito-http.conf
(presente e funzionante solo se avete seguito la nostra guida) -
Ubuntu:
/etc/apache2/sites-enabled/miosito-http.conf
-
CentOS:
/etc/httpd/conf.d/miosito-http.conf
[In alternativa, spostate il file appena scaricato in un percorso a piacere e aggiungete una direttiva simile a include "/mio/percorso/miosito-http.conf"
in coda al file di configurazione principale di Apache: a seconda della piattaforma, si tratta di C:\Program Files\Apache\conf\httpd.conf
(Windows), /etc/apache2/apache2.conf
(Ubuntu) oppure /etc/httpd/conf/httpd.conf
(CentOS)]
Ora aprite il file di configurazione appena scaricato (usate Blocco note sotto Windows e nano con Linux) e sostituite le occorrenze della stringa miosito.com
con il nome a dominio del vostro sito (senza www
, ovviamente), e conservando il *.
dove presente nel modello fornito
Riavviate Apache, aprite il browser e provate ad aprire il vostro sito via http://
. Dovreste essere rimandati automaticamente all'indirizzo https://
corrispondente.
Redirect da HTTP a HTTPS con Nginx
Se stiamo lavorando con Nginx su Ubuntu oppure CentOS, possiamo implementare il redirect da HTTP a HTTPS tramite il singolo comando concatenato proposto di seguito. Prima di lanciarlo, impartiamo sudo -s
per ottenere i privilegi di root, poi:
export MIO_DOMINIO="turbolab.it" && curl -o "/etc/nginx/conf.d/${MIO_DOMINIO}-http.conf" https://turbolab.it/scarica/206 && sed -i -e "s/miosito.com/${MIO_DOMINIO}/g" "/etc/nginx/conf.d/${MIO_DOMINIO}-http.conf" && cat "/etc/nginx/conf.d/${MIO_DOMINIO}-http.conf" && systemctl restart nginx
Come unica attenzione, ricordate di valorizzare opportunamente la variabile MIO_DOMINIO
all'inizio con il nome a dominio per il quale stiamo impostando il redirect da HTTP ad HTTPS.
Provate ora ad aprire il vostro sito via http://
. Dovreste essere rimandati automaticamente all'indirizzo https://
corrispondente. Se tutto funziona correttamente, avete concluso
Se invece state lavorando con Nginx su Windows oppure preferite svolgere l'operazione manualmente, svolgete i passaggi seguenti.
Innanzitutto, scaricare questo file:
» Download: Template redirect HTTP-HTTPS Nginx
Salvatelo, assegnandogli un nome a piacere (ma mantenendo l'estensione .conf
!), nella cartella:
-
Windows:
C:\Program Files\Nginx\conf\miosito-http.conf
-
Ubuntu/CentOS:
/etc/nginx/conf.d/miosito-http.conf
Solo sotto Windows, ma non Linux: aprite con Blocco note il file di configurazione principale di Nginx (generalmente: C:\Program Files\Nginx\conf\nginx.conf
) ed accodate questa direttiva:
include "C:\Program Files\Nginx\conf\miosito-http.conf"
Indipendentemente dalla piattaforma, aprite il file di configurazione appena scaricato (usate Blocco note sotto Windows e nano con Linux) e sostituite la stringa miosito.com
con il nome a dominio del vostro sito (senza www
, ovviamente). Prestate attenzione a conservare il punto all'inizio e il punto e virgola alla fine
Riavviate Nginx, aprite il browser e provate ad aprire il vostro sito via http://
. Dovreste essere rimandati automaticamente all'indirizzo https://
corrispondente.