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

Il fatto che venga ricordato e non si possa revocare. Manda max-age=31536000 e ogni browser che l'ha visto rifiuterà http per un anno. Se poi il tuo certificato scade, o un sottodominio non ne ha nessuno, i visitatori ricevono un avviso che non possono superare con un clic — e togliere l'intestazione non serve a niente, perché l'istruzione è già dentro il loro browser.

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.

HSTS vale la pena averlo. È il rinnovo automatico a renderlo sicuro — vedi Il rinnovo che fallisce in silenzio.