Was HSTS macht

HSTS sagt dem Browser, dass deine Website nur über HTTPS erreichbar ist. Er ruft sie danach nie mehr unverschlüsselt auf, auch wenn jemand „http://“ eintippt.

So funktioniert es

Selbst mit einer Umleitung von HTTP auf HTTPS geht der erste Aufruf oft unverschlüsselt hinaus, etwa wenn jemand nur example.com eintippt. In einem fremden WLAN kann ein Angreifer genau diesen Aufruf abfangen und den Besucher auf einer unverschlüsselten Kopie festhalten.

HSTS (HTTP Strict Transport Security) schließt diese Lücke. Deine Seite sendet über HTTPS den Header Strict-Transport-Security. Der Browser merkt sich für die angegebene Zeit, dass er den Namen nur noch über HTTPS aufruft. Aus http:// macht er selbst https://, bevor eine Anfrage das Gerät verlässt. Bei Zertifikatsfehlern kann der Besucher die Warnung dann nicht mehr wegklicken.

Der Browser beachtet den Header nur über HTTPS und nur für den Namen, der ihn gesendet hat. Deshalb sollte HTTP zuerst auf HTTPS desselben Hosts umleiten (siehe HTTPS).

Worauf es ankommt

  • max-age von einem Jahr. Die Dauer steht in Sekunden. Empfohlen sind 31536000 (ein Jahr); unter einem halben Jahr ist der Schutz zu kurz, weil der nächste Besuch nach Ablauf wieder ungeschützt ist.
  • includeSubDomains nur, wenn alle Subdomains HTTPS können. Dann gilt der Schutz auch für shop.example.com und alle anderen. Eine Subdomain ohne Zertifikat ist danach im Browser nicht mehr erreichbar.
  • max-age=0 schaltet HSTS ab. Browser, die es schon kannten, vergessen es. Das ist nur für den geordneten Rückzug gedacht.
  • Ein Header, ein Wert. Fehlt ein lesbares max-age, ignorieren Browser den Header. Kommt er doppelt, zählt der erste.
  • preload ist ein eigener Schritt. Mit preload, includeSubDomains und mindestens einem Jahr kann die Domain auf hstspreload.org in die Liste eingetragen werden, die in die Browser eingebaut ist. Dann ist auch der allererste Besuch geschützt. Das Austragen dauert Monate; überlege es dir vorher gut.

So richtest du es ein

Der empfohlene Header:

Strict-Transport-Security: max-age=31536000; includeSubDomains

Er wird im Webserver oder in der Anwendung gesetzt, von dir, deiner Agentur oder über die Verwaltung des Hosters.

Webserver
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Bei nginx gehört die Zeile in den Server-Block für HTTPS. Wer unsicher ist, ob alle Subdomains HTTPS können, beginnt ohne includeSubDomains und mit kurzer Dauer, prüft alles und erhöht dann auf ein Jahr. Viele CDNs und Sicherheits-Plugins für CMS bieten HSTS als Schalter an.

Mehr zu HTTPS und Transport

Jetzt deine Website prüfen

Der Security-Check zeigt in wenigen Sekunden, welche Header fehlen, mit fertigen Zeilen zum Kopieren.

Website prüfen