Security Header

HTTP Strict Transport Security (HSTS) im Detail: HTTPS-Zwang

HTTP Strict Transport Security (HSTS) ist ein kritischer Sicherheits-Response-Header, der Webbrowser dazu zwingt, eine Website ausschliesslich über verschlüsselte HTTPS-Verbindungen aufzurufen. HSTS schützt Unternehmen und deren Nutzer vor Man-in-the-Middle-Angriffen, insbesondere vor dem sogenannten SSL-Stripping (Herabstufen einer HTTPS-Verbindung auf unverschlüsseltes HTTP), und unterbindet das Umgehen von SSL-Zertifikatswarnungen durch die Anwender.

HSTS ist einer der wichtigsten Security Header überhaupt, weil er eine grundlegende Schwachstelle des Webs schliesst: den unverschlüsselten ersten Verbindungsaufbau. Zusammen mit einer starken Content Security Policy bildet er das Fundament einer gehärteten Webanwendung.

Die Sicherheitslücke: Das Problem der HTTP-Weiterleitung

Die meisten Websites leiten HTTP-Anfragen per 301-Redirect auf HTTPS um:

  • Ein Nutzer gibt example.com in die Adresszeile ein.
  • Der Browser sendet standardmässig eine unverschlüsselte Anfrage an http://example.com.
  • Der Server antwortet mit einer Weiterleitung auf https://example.com.

Diese erste unverschlüsselte HTTP-Anfrage ist die grösste Angriffsfläche. Ein Angreifer im selben Netzwerk (z. B. in einem ungesicherten Hotel-WLAN) kann diese Anfrage abfangen, sich als Server ausgeben und dem Nutzer weiterhin eine manipulierte HTTP-Version der Website präsentieren, während er im Hintergrund die Daten mitliest.


Wie HSTS funktioniert

HSTS schliesst diese Lücke, indem der Server dem Browser beim ersten sicheren Aufruf einen HSTS-Header mitsendet:

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

Die Parameter im Detail:

  • max-age=31536000: Teilt dem Browser mit, dass er sich für die nächsten 31’536’000 Sekunden (exakt ein Jahr) merken muss, diese Website ausschliesslich über HTTPS aufzurufen.
  • includeSubDomains: Wichtig für B2B-Projekte: Wendet den HTTPS-Zwang automatisch auf alle Subdomains (z. B. api.example.com, mail.example.com) an.
  • preload: Autorisiert die Aufnahme der Domain in die offizielle HSTS-Preload-Liste.

Die HSTS-Preload-Liste: Der ultimative Schutz

Selbst mit HSTS ist der allererste Aufruf der Website auf einem neuen Gerät oder nach dem Löschen des Browser-Verlaufs ungeschützt (da der Browser den HSTS-Header noch nie gesehen hat).

Um dieses „First-Visit-Problem“ zu lösen, pflegt Google eine HSTS-Preload-Liste, die direkt in den Quellcode aller grossen Browser (Chrome, Firefox, Safari, Edge) einkompiliert wird.

  • Sobald Sie Ihre Domain auf der Plattform hstspreload.org registrieren, weiss jeder Browser weltweit bereits vor dem allerersten Seitenaufruf, dass Ihre Domain ausschliesslich über HTTPS geladen werden darf.
  • Ein unverschlüsselter HTTP-Verbindungsaufbau wird auf Netzwerkebene des Browsers unmöglich gemacht.

Die drei Stufen der HSTS-Einführung

HSTS sollte man – ähnlich wie eine DMARC-Policy – schrittweise schärfen, um sich nicht selbst auszusperren:

StufeHeaderZweckDauer
1. Testenmax-age=300Kurze Laufzeit, Fehler bleiben korrigierbarwenige Tage
2. Etablierenmax-age=31536000; includeSubDomainsVoller HTTPS-Zwang inkl. Subdomainsmehrere Wochen
3. Preloadmax-age=31536000; includeSubDomains; preloadAufnahme in die Browser-Preload-Listedauerhaft

Erst wenn alle Subdomains nachweislich über gültige Zertifikate verfügen, sollte Stufe 3 erfolgen.


Typische HSTS-Fehlkonfigurationen

FehlerFolge
includeSubDomains bei HTTP-only-SubdomainSubdomain wird unerreichbar
Zu kurzer max-ageSchutz läuft schnell ab, First-Visit-Lücke bleibt
preload ohne erfüllte VoraussetzungenAntrag wird abgelehnt, kein Schutz
HSTS auf reiner HTTP-Seite gesendetHeader wird ignoriert (nur über HTTPS gültig)

Ein häufiger Praxisfehler: Eine Domain wird vorschnell in die Preload-Liste eingetragen, obwohl ein Altsystem unter einer Subdomain nur HTTP spricht. Da das Entfernen aus der Liste Monate dauern kann, ist sorgfältige Vorbereitung entscheidend.


HSTS im Zusammenspiel mit anderen Massnahmen

HSTS wirkt nur auf den Transportweg. Für eine umfassend abgesicherte Anwendung gehören weitere Bausteine dazu:

Eine vollständige Übersicht bietet die Security-Header-Checkliste.

[!CAUTION] Der Eintrag in die Preload-Liste ist dauerhaft und schwer rückgängig zu machen. Stellen Sie sicher, dass alle Ihre Subdomains (auch Testumgebungen) über ein gültiges SSL-Zertifikat verfügen, bevor Sie die Registrierung durchführen. Prüfen Sie Ihre HSTS-Konfiguration mit dem Security Header Check auf balou.tools.

Häufig gestellte Fragen (FAQ)

Wie schützt HSTS vor SSL-Stripping?

Bei einem SSL-Stripping-Angriff fängt ein Angreifer im selben Netzwerk (z. B. im offenen WLAN) die erste unverschlüsselte HTTP-Anfrage ab und leitet den Nutzer auf eine gefälschte HTTP-Kopie der Seite um. HSTS verhindert dies, indem der Browser die HTTP-Anfrage lokal (noch auf dem Gerät des Nutzers) in HTTPS umwandelt.

Was passiert, wenn man HSTS mit includeSubDomains aktiviert, aber ein Subsystem kein HTTPS unterstützt?

Dieses Subsystem (z. B. eine alte interne Intranet-Subdomain) wird für alle Besucher sofort unzugänglich. Da HSTS eine verschlüsselte Verbindung erzwingt und der Browser keine Ausnahmen (Zertifikatswarnungen überspringen) zulässt, ist dies ein schwerer Administrationsfehler.

Welcher max-age-Wert ist für HSTS empfehlenswert?

Für die Einführung beginnt man mit einem kurzen Wert wie 300 Sekunden zum Testen. Im Produktivbetrieb sind mindestens 31536000 Sekunden (ein Jahr) Standard; für die Aufnahme in die Preload-Liste ist genau dieser Wert zusammen mit includeSubDomains und preload zwingend.

Funktioniert HSTS auch ohne gültiges Zertifikat?

Nein – im Gegenteil. Sobald HSTS aktiv ist, lehnt der Browser jede Verbindung mit ungültigem oder abgelaufenem Zertifikat kompromisslos ab und lässt den Nutzer die Warnung nicht mehr überspringen. Ein lückenloses Zertifikatsmanagement ist daher Voraussetzung.