HSTS dice al browser di rifiutare l'http semplice per il tuo dominio per un periodo stabilito. Chiude un attacco reale — la primissima richiesta, prima del reindirizzamento — e il browser se lo ricorda: proprio per questo va introdotto con prudenza.
L'intestazione
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Che cosa lo rende pericoloso
Introducilo per gradi
# week 1 - five minutes
add_header Strict-Transport-Security "max-age=300" always;
# week 2 - a day
add_header Strict-Transport-Security "max-age=86400" always;
# week 3 - a week, then a year once nothing has broken
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
includeSubDomains è la parte che frega le persone
Vale per ogni sottodominio, compresi quelli che avevi dimenticato: un vecchio ambiente di prova, uno strumento interno, un host ereditato senza certificato. Tutti diventano irraggiungibili via http, in un colpo solo. Accertati che ogni sottodominio abbia un certificato valido prima di aggiungerlo.
for h in www shop staging api mail; do
printf '%-8s ' "$h"
curl -sS -o /dev/null -w '%{http_code}\
' "https://$h.example.com/" || echo FAIL
done
Il precaricamento è, in pratica, permanente
L'elenco di precaricamento è compilato dentro i browser, quindi la regola vale ancora prima di qualsiasi visita. Uscirne richiede mesi per raggiungere tutti. Non aggiungere il token preload finché il sito non ha girato un anno a max-age pieno senza incidenti.
Se sei già chiuso fuori
Ripara il certificato: è l'unica risposta vera. Per la tua macchina, Chrome può ripulire un singolo dominio da chrome://net-internals/#hsts, il che ti permette di provare e non fa nulla per i tuoi visitatori.
