HSTS weist einen Browser an, für Ihre Domain für eine festgelegte Dauer einfaches http zu verweigern. Es schließt einen echten Angriff — die erste Anfrage vor der Weiterleitung — und der Browser merkt es sich, weshalb es genau deshalb behutsam eingeführt werden muss.
Der Header
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Was ihn gefährlich macht
Führen Sie ihn in Stufen ein
# 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 ist der Teil, der die Leute erwischt
Er gilt für jede Subdomain, auch die vergessenen: eine alte Staging-Seite, ein internes Werkzeug, ein Alt-Host ohne Zertifikat. Sie alle werden auf einen Schlag über http unerreichbar. Vergewissern Sie sich, dass jede Subdomain ein gültiges Zertifikat hat, bevor Sie ihn hinzufügen.
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
Preloading ist praktisch endgültig
Die Preload-Liste ist in die Browser einkompiliert, die Regel gilt also schon vor jedem Besuch. Eine Entfernung braucht Monate, bis sie alle erreicht. Fügen Sie das preload-Token erst hinzu, wenn die Website ein Jahr lang mit vollem max-age ohne Zwischenfall gelaufen ist.
Wenn Sie schon ausgesperrt sind
Reparieren Sie das Zertifikat — das ist die einzige echte Antwort. Für Ihren eigenen Rechner kann Chrome unter chrome://net-internals/#hsts eine Domain löschen; das erlaubt Ihnen zu testen und hilft Ihren Besuchern kein bisschen.
