HSTS aktivieren: HTTPS im Browser dauerhaft festschreiben
Was HSTS ist, warum eine Weiterleitung auf HTTPS nicht reicht und wie du den Header stufenweise einführst, ohne Besucher auszusperren.
Um HSTS zu aktivieren, lässt du deinen Webserver bei jeder HTTPS-Antwort eine kurze Zusatzzeile mitsenden: Strict-Transport-Security: max-age=…. Diese Zeile heisst Header. Sie sagt dem Browser: «Ruf diese Website für die nächste Zeit nur noch verschlüsselt auf.» Das Einschalten ist schnell erledigt. Heikel wird es, wenn du die Dauer zu früh zu hoch ansetzt, denn der Browser merkt sich die Regel und lässt sich von aussen nicht umstimmen. Hier liest du, wie du HSTS stufenweise einführst, wie du prüfst, ob es wirkt, und warum du mit dem Preloading besser wartest.
Das Wichtigste in Kürze
- HSTS sorgt dafür, dass der Browser deine Website nur noch über HTTPS aufruft, auch wenn jemand
http://eintippt oder einen alten Link anklickt. - Voraussetzung ist ein gültiges Zertifikat für alle Adressen deiner Domain. Fehlt es irgendwo, sperrst du deine Besucher aus.
- Fang mit einer kurzen Dauer an, etwa fünf Minuten, und erhöhe sie schrittweise.
- Preloading baut deine Domain fest in die Browser ein. Das lässt sich kaum rückgängig machen und lohnt sich für kleine Websites selten.
- Ob HSTS wirkt, prüfst du in einer Minute mit den Entwicklerwerkzeugen deines Browsers.
Was HSTS macht und warum eine Weiterleitung nicht reicht
HTTPS ist die verschlüsselte Variante von HTTP. Die meisten Websites leiten Besucher, die über http:// kommen, automatisch auf https:// um, meist mit einer 301-Weiterleitung. Das hat eine Lücke: Der allererste Aufruf läuft noch unverschlüsselt. Wer in diesem Moment im selben Netz mitliest, etwa im öffentlichen WLAN am Bahnhof, kann die Weiterleitung abfangen und eine unverschlüsselte Fassung der Seite unterschieben. Fachleute nennen das einen Downgrade-Angriff.
Hier setzt HSTS an, kurz für HTTP Strict Transport Security. Der Mechanismus ist seit 2012 im Standard RFC 6797 der IETF festgelegt. Hat der Browser den Header einmal über eine sichere Verbindung erhalten, merkt er sich deine Domain. Ab dann wandelt er jeden Aufruf selbst in HTTPS um, bevor überhaupt etwas über das Netz geht.
Die Mozilla-Dokumentation zum Header zeigt das an einem Beispiel: Jemand besucht eine Website zu Hause und sitzt Wochen später im Gratis-WLAN am Flughafen. Weil sich der Browser an die Regel erinnert, geht die Verbindung auch dort direkt verschlüsselt raus. Laut dem Wikipedia-Artikel zu HSTS schützt das neben Downgrade-Angriffen auch davor, dass Cookies abgegriffen werden, also die kleinen Dateien, mit denen eine Website zum Beispiel eine Anmeldung wiedererkennt.

Eine Schwäche bleibt: Beim allerersten Besuch kennt der Browser die Regel noch nicht. Diese Lücke schliesst das Preloading, zu dem wir weiter unten kommen.
Der Header Zeile für Zeile
Ein vollständiger Header für eine Website im Dauerbetrieb sieht so aus:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
| Direktive | Was sie bewirkt | Wann du sie setzt |
|---|---|---|
max-age=… |
Wie lange sich der Browser die Regel merkt, in Sekunden. 31'536'000 Sekunden sind ein Jahr. | Immer, sie ist Pflicht. |
includeSubDomains |
Die Regel gilt auch für alle Subdomains, etwa shop.deinefirma.ch. |
Erst wenn jede Subdomain ein gültiges Zertifikat hat. |
preload |
Signalisiert, dass die Domain in die fest eingebaute Liste der Browser darf. | Erst nach einer langen, stabilen Phase und nur mit Absicht. |
Zwei Regeln aus der MDN-Referenz solltest du kennen. Erstens ignoriert der Browser den Header, wenn er über unverschlüsseltes HTTP kommt, sonst könnte ein Angreifer eine falsche Regel einschleusen. Zweitens gilt HSTS nur für Domains, nie für reine IP-Adressen.
max-age=0 schaltet HSTS wieder aus. Der Browser löscht die Regel aber erst, wenn er diesen Header tatsächlich erhält, also beim nächsten Besuch über HTTPS.
Voraussetzungen, bevor du HSTS einschaltest
HSTS verzeiht keine halben Sachen. Geh diese Liste durch, bevor du den Header setzt:
- Gültiges Zertifikat: Deine Domain hat ein Zertifikat, das nicht abgelaufen ist und sich automatisch erneuert. Mehr dazu in SSL-Zertifikat-Arten: Welches passt zu deiner Website?
- Alle Varianten der Adresse: Sowohl
deinefirma.chals auchwww.deinefirma.chlaufen über HTTPS. - Die Weiterleitung steht: Wer
http://aufruft, landet aufhttps://. - Keine gemischten Inhalte: Bilder, Schriften und Skripte kommen ebenfalls über
https://. Ein einziges Bild mithttp://-Adresse kann sonst blockiert werden. - Subdomains im Blick: Willst du später
includeSubDomainssetzen, liste alle Subdomains auf. Oft gibt es vergessene, etwa eine alte Testseite oder ein Kundenportal bei einem anderen Anbieter. Welche es gibt, siehst du in den DNS-Einträgen deiner Domain, siehe DNS-Einträge selber verwalten.
HSTS in Stufen einführen
Der sicherste Weg ist ein gestaffeltes Vorgehen. Die Betreiber der Preload-Liste empfehlen auf hstspreload.org, mit fünf Minuten zu beginnen, über eine Woche auf einen Monat zu erhöhen und jede Stufe ihre volle Dauer laufen zu lassen. Für den Dauerbetrieb nennt die Lighthouse-Dokumentation von Chrome zwei Jahre und warnt bei weniger als einem Jahr.
- Testen mit fünf Minuten:
max-age=300. Geht etwas schief, ist die Regel nach fünf Minuten vergessen. Klick dich durch alle wichtigen Seiten, auch durch Formulare und Bildergalerien. - Eine Woche:
max-age=604800. Achte darauf, ob sich jemand meldet, der die Website nicht mehr erreicht. - Ein Monat:
max-age=2592000, jetzt mitincludeSubDomains, sofern alle Subdomains HTTPS können. - Dauerbetrieb:
max-age=31536000(ein Jahr) oder63072000(zwei Jahre).
| Stufe | max-age | Entspricht | Rückweg bei einem Fehler |
|---|---|---|---|
| 1 | 300 | 5 Minuten | sofort |
| 2 | 604800 | 1 Woche | bis zu 7 Tage |
| 3 | 2592000 | 30 Tage | bis zu 30 Tage |
| 4 | 31536000 bis 63072000 | 1 bis 2 Jahre | praktisch nur per max-age=0 beim nächsten Besuch |
Die letzte Spalte ist der Grund für die Geduld: Je länger die Dauer, desto länger hängen Besucher fest, wenn dein Zertifikat einmal ausfällt.
Wo der Header hingehört
Das hängt von der Software ab, die deinen Webserver betreibt. Im Zweifel fragst du deinen Hosting-Anbieter.
Apache, über eine .htaccess-Datei im Hauptordner der Website:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=300"
</IfModule>
nginx, in der Server-Konfiguration im Block für HTTPS:
add_header Strict-Transport-Security "max-age=300" always;
IIS (Windows-Server): Neuere Versionen haben im IIS-Manager bei der Website eine eigene HSTS-Einstellung.
Hosting-Oberfläche: Manche Verwaltungsoberflächen haben bei den SSL-Einstellungen einen Schalter für HSTS.
Baust du deine Website mit einem KI-Assistenten wie Claude oder ChatGPT, schreibt er dir die passende Zeile. Sag ihm dazu, welche Stufe du gerade einführst. Sonst schlägt er womöglich gleich den Jahreswert vor.
So prüfst du, ob HSTS wirkt
- Öffne deine Website über
https://im Browser. - Öffne die Entwicklerwerkzeuge, meist mit F12 oder Rechtsklick und «Untersuchen».
- Wechsle in den Reiter «Netzwerk» und lade die Seite neu.
- Klick auf den ersten Eintrag, das ist die Seite selbst, und such unter den Antwort-Headern nach
strict-transport-security.
Steht dort dein Wert, ist HSTS aktiv. Fehlt die Zeile, wird der Header nicht gesendet. Auf hstspreload.org kannst du zusätzlich deine Domain eingeben und siehst, ob der Header die Anforderungen für das Preloading erfüllt.
Dass das kein Detail für Spezialisten ist, zeigt ein Beispiel aus der Schweiz: In den veröffentlichten Penetrationstests zum Login AGOV des Bundes taucht ein fehlender oder falsch gesetzter HSTS-Header als Befund mit mittlerem Schweregrad auf.
Preloading: der Schritt ohne einfachen Rückweg
Preloading schliesst die Lücke beim allerersten Besuch. Deine Domain kommt auf eine Liste, die fest in die grossen Browser eingebaut ist. Der Browser weiss dann schon vor dem ersten Aufruf, dass er nur HTTPS verwenden darf.
Für die Aufnahme verlangt hstspreload.org ein gültiges Zertifikat, eine Weiterleitung von HTTP auf HTTPS, HTTPS für alle Subdomains und einen Header mit mindestens einem Jahr max-age sowie includeSubDomains und preload. Diese Bedingungen musst du dauerhaft erfüllen, nicht nur am Tag der Anmeldung.
Der Haken ist der Rückweg. Es gibt zwar ein Formular zur Entfernung von der Liste, aber die Löschung erreicht die Geräte deiner Besucher erst mit Browser-Updates, und das dauert Monate. Bis dahin ist deine Domain mit allen Subdomains per HTTP nicht erreichbar. Wer später eine Subdomain für einen Dienst braucht, der kein HTTPS kann, hat ein Problem.
Unsere Einschätzung für kleine Websites: Preloading ist kein Muss. Der Header mit langer Laufzeit schützt alle wiederkehrenden Besucher bereits. Für Websites mit Logins oder sensiblen Kundendaten kann sich Preloading lohnen, aber erst nach Monaten im stabilen Betrieb.
Typische Fehler
- Gleich mit einem Jahr starten: Ein übersehener Fehler am Zertifikat sperrt Besucher dann für lange Zeit aus.
includeSubDomainszu früh: Eine alte Subdomain ohne Zertifikat ist plötzlich nicht mehr erreichbar.- Ablaufendes Zertifikat: Mit HSTS lassen Browser bei Zertifikatsfehlern kein «Trotzdem fortfahren» mehr zu, so verlangt es der Standard. Die automatische Erneuerung muss deshalb zuverlässig laufen.
- Header nur auf der Startseite: Der Header gehört in jede HTTPS-Antwort.
- Den Domainwechsel vergessen: Ziehst du auf eine neue Adresse um, muss die alte Domain weiter sauber per HTTPS weiterleiten. Siehe 301 oder 302: Welche Weiterleitung passt zu deiner Website?
Ist deine Website nach einer Änderung plötzlich nicht mehr erreichbar, findest du die häufigsten Ursachen in Warum meine Website nicht erreichbar ist.
Was HSTS nicht leistet
HSTS sichert den Transportweg, nicht die Website selbst. Es schützt nicht vor einer gefälschten Website mit ähnlicher Adresse, nicht vor schwachen Passwörtern und nicht vor einer Phishing-Mail. Ergänzend gehören Cookies mit den Attributen Secure (nur über HTTPS senden) und SameSite (nicht an fremde Websites mitschicken) dazu, wie das Cheat Sheet von OWASP zu HSTS festhält. Dort steht auch ein Randaspekt: Weil Browser HSTS-Einträge speichern, liesse sich dieser Speicher theoretisch zum Wiedererkennen von Besuchern missbrauchen. Der Schutz wiegt das deutlich auf.
Der grösste Teil der Sicherheit hängt ohnehin an Menschen. Eine Phishing-Mail, die jemanden auf eine gefälschte Anmeldeseite lockt, kommt an jedem Header vorbei. Wer im Team Mails beantwortet, Rechnungen freigibt oder Zugänge verwaltet, lernt in einem Online-Kurs zur Cybersicherheit für Mitarbeitende, solche Fallen zu erkennen.
HSTS und Datenschutz in der Schweiz
Das Schweizer Datenschutzgesetz (DSG) verlangt, dass Personendaten angemessen geschützt werden, nennt aber keine einzelnen Massnahmen wie HSTS. Was angemessen ist, hängt davon ab, welche Daten deine Website bearbeitet. Eine Visitenkarten-Website ist anders zu beurteilen als ein Shop mit Kundenkonten. Mehr zum Hosting steht in DSGVO-konformes Hosting. Das ist eine allgemeine Information und keine Rechtsberatung.
So ist es bei MADLAB // Publishing
Liegt deine Website bei uns im Hosting, musst du nichts davon selbst einrichten. Sie bekommt ein Zertifikat von Let's Encrypt, das sich selbst erneuert, auch unter deiner eigenen Domain. Wer http:// aufruft, wird auf https:// weitergeleitet. Und jede Antwort trägt den HSTS-Header. Siehe Eigene Domain verbinden.
Wir halten uns dabei an das, was wir hier empfehlen: Wir haben mit einer kurzen Dauer angefangen und erhöhen sie Stufe um Stufe. includeSubDomains setzen wir nicht, weil viele unserer Kundinnen und Kunden auf ihrer Domain auch Subdomains bei anderen Anbietern haben, etwa für Mail oder einen Shop.
Bevor eine Änderung an deiner Website live geht, siehst du sie in der Vorschau, und jeder Stand lässt sich zurückholen. Eine HSTS-Regel, die ein Browser schon gelernt hat, holt allerdings keine Version zurück: Sie liegt auf dem Gerät des Besuchers, nicht auf dem Server. Wie Vorschau und Versionen zusammenspielen, steht in Staging-Website: Änderungen sicher testen, bevor sie live gehen.
Gebaut und gepflegt wird die Website bei MADLAB // Publishing im Gespräch mit einem KI-Assistenten wie Claude oder ChatGPT. Wir übernehmen das Veröffentlichen und das Hosting in der Schweiz und der EU, mit täglichen Sicherungen. Was die Pläne kosten, steht in Pläne und Zusatzpakete.
Quellen
- RFC 6797: HTTP Strict Transport Security – IETF
- Strict-Transport-Security – MDN Web Docs
- HSTS Preload List Submission
- HSTS Preload List Removal
- Use a strong HSTS policy – Chrome for Developers
- HTTP Strict Transport Security Cheat Sheet – OWASP
- HTTP Strict Transport Security – Wikipedia
- PenTest & Bug Bounty Overview – AGOV
Häufige Fragen
Ist es sinnvoll, HSTS zu aktivieren?
Ja, sobald deine Website vollständig und dauerhaft über HTTPS läuft. HSTS schliesst die Lücke, die eine einfache Weiterleitung von HTTP auf HTTPS offenlässt, besonders in öffentlichen WLANs. Starte mit einer kurzen Dauer und erhöhe sie schrittweise.
Warum kann ich eine Website wegen HSTS nicht besuchen?
Der Browser hat sich gemerkt, dass die Website nur verschlüsselt erreichbar sein darf, und findet jetzt ein Problem mit dem Zertifikat, etwa weil es abgelaufen ist. Bei HSTS-Websites lassen Browser diese Warnung absichtlich nicht überspringen. Als Besucher kannst du nur warten, als Betreiber musst du das Zertifikat reparieren.
Wie lange sollte max-age sein?
Für den Dauerbetrieb ein bis zwei Jahre (31'536'000 bis 63'072'000 Sekunden). Ein Jahr ist auch das Minimum für das Preloading. Für den Einstieg reichen fünf Minuten bis eine Woche.
Wie schalte ich HSTS wieder aus?
Sende den Header mit max-age=0 über HTTPS. Jeder Browser, der deine Website danach besucht, löscht die Regel. Wer in der Zwischenzeit nicht vorbeikommt, behält sie bis zum Ablauf der ursprünglichen Dauer.
Muss ich meine Domain für das Preloading anmelden?
Nein. Der Header allein schützt alle wiederkehrenden Besucher. Preloading ist ein zusätzlicher, schwer umkehrbarer Schritt, der sich vor allem für Websites mit Logins oder sensiblen Daten nach einer langen, stabilen Phase lohnt.