Da molto tempo ormai HTTPS è imprescindibile: è un fattore di ranking per Google, e i browser segnalano l’assenza di un certificato SSL facendo apparire l’odiosa scritta “Non sicuro“. Sia che scegliate di installare il certificato gratuito Let’s Encrypt, sia che utilizziate un certificato SSL più solido a pagamento, ogni volta che sul browser digitate l’indirizzo del vostro sito, di default esso invia una richiesta alla versione HTTP, e soltanto in seguito viene effettuata la redirezione alla versione HTTPS, facendo perdere del tempo prezioso, anche 1 secondo.
Utilizzando WordPress è possibile utilizzare uno dei numerosi plugin che si occupano della migrazione HTTP-HTTPS, come ad esempio Really Simple SSL:
Ma c’è un problema: la redirezione avviene tramite PHP, e ciò si traduce in tempi di caricamento più lunghi. Come ovviare a questo? La risposta sta nell’acronimo HSTS. Vediamo cos’è e come funziona.
Passo 1: Configurare il web server per il redirect HTTPS
Per prima cosa occorre modificare il file .htaccess da cPanel o da FTP, aggiungendo le seguenti righe di codice:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
E’ anche possibile aggiungere un meta tag HTML all’interno di ciascuna pagina del sito per dire al browser di usare HTTPS per tutte le richieste all’interno della pagina.
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Passo 2: Abilitare HSTS
HSTS è l’acronimo di HTTP Strict Transport Security, ed è un header che viene inviato in risposta ad una richiesta HTTP. In poche parole dice al browser di usare HTTPS di default, dato che il sito in questione (il vostro!) ha HTTPS attivo per un tot di giorni.
Pertanto, la prossima volta che qualcuno inserisce nella barra degli indirizzi del browser l’URL “http://tuosito.com”, il browser aprirà direttamente “https://tuosito.com”, risparmiando tempo prezioso.
HSTS ha anche alcuni benefici per quanto riguarda la sicurezza, ad esempio una maggior protezione verso gli attacchi Man in the Middle.
Per abilitare HSTS, è sufficiente inserire queste righe di codice nel file .htaccess:
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
Dopo essere arrivati fino a qui, occorre verificare che tutto stia filando liscio. Aprite la developer toolbar di Chrome (premendo il tasto F12 su computer Windows) e verificate la presenza dell’header strict-transport-security in risposta, come da schermata seguente.
Se non sapete come usare la developer toolbar di Chrome, visitate in alternativa il sito web https://hstspreload.org/ e inserire il nome di dominio nell’apposito campo. Nella schermata che segue, potete vedere un esempio di un sito in cui HSTS non è attivo.
Invece, in questa schermata ecco un esempio di sito con HSTS attivo:
Passo 3: Inviare il sito alla lista HSTS di Chrome
Anche se avete abilitato HSTS seguendo i passi 1 e 2 di questa guida, gli utenti che visiteranno il vostro sito per la prima volta dovranno comunque perdere del tempo prezioso per via della redirezione da HTTP a HTTPS. Come fare dunque a evitare tutto ciò?
La risposta sta nel browser Chrome, che mantiene una lista di siti web in cui è abilitato HSTS direttamente dall’interno del suo browser. Anche gli altri browser usano questa lista, pertanto l’invio va fatto una sola volta. Bisogna quindi capire come fare ad aggiungere il vostro sito a questa lista: la risposta ancora una volta sta nel sito web che abbiamo imparato a conoscere poco fa, ossia https://hstspreload.org/
Se avete effettuato tutti i passaggi correttamente fino ad ora, vi verrà data la possibilità di inserire il sito all’interno della lista.
Attenzione
Dovete assicurarvi continuamente che il vostro sito soddisfi i requisiti di HSTS, ossia:
- che ci sia un certificato HTTPS valido
- che ci siano le direttive nel file .htaccess
E’ possibile rimuovere il sito dalla lista di Chrome, ma attenzione al fatto che la rimozione non è semplice: ci possono volere mesi poichè le liste vengono rilasciate soltanto durante gli aggiornamenti di Chrome, e non è possibile conoscere a priori il comportamento degli altri browser. Non fate richiesta di inclusione nella lista HSTS a meno che non siate sicuri che potete supportare HTTPS per il vostro sito e tutti i suoi sottodomini a lungo termine.
Ad ogni modo, per far richiesta di rimozione, è possibile utilizzare l’apposito form sul sito.