HSTS einrichten: Strict-Transport-Security richtig setzen
Stand: 3. Oktober 2026 · CAZ Labs
Kurz gesagt
HSTS ist ein HTTP-Header, mit dem deine Seite dem Browser sagt: Ruf mich für eine bestimmte Zeit nur noch über https auf. Damit fällt die kurze unverschlüsselte Anfrage vor der Weiterleitung weg. Der Header ist eine Zeile, aber vor `includeSubDomains` und `preload` solltest du prüfen, ob wirklich alle Subdomains https können.
Warum das wichtig ist
Auch mit sauberer Weiterleitung auf HTTPS gibt es einen schwachen Moment: Wer deine Domain ohne https eintippt, schickt die erste Anfrage unverschlüsselt los. In einem manipulierten WLAN kann ein Angreifer genau diese Anfrage abfangen und die Weiterleitung unterdrücken. Das Verfahren heißt SSL-Stripping und ist seit Jahren bekannt.
Mit HSTS merkt sich der Browser nach dem ersten Besuch, dass deine Domain nur verschlüsselt erreichbar ist. Ab dann baut er jede Verbindung direkt über https auf, auch wenn jemand http:// tippt oder einen alten Link anklickt. Bei Zertifikatsfehlern gibt es zusätzlich keinen Knopf mehr, um die Warnung wegzuklicken.
Für eine kleine Firmenwebsite ist HSTS ein Baustein unter vielen, checkfrei gewichtet ihn entsprechend niedrig. Weil er nur eine Zeile Konfiguration kostet, gibt es trotzdem wenig Gründe, darauf zu verzichten.
So prüfst du es selbst
Öffne die Entwicklertools (F12), lade die Seite neu und klick im Reiter „Netzwerk“ auf den ersten Eintrag. Unter den Antwort-Headern steht, wenn vorhanden, strict-transport-security. Im Terminal:
curl -sI https://example.de | grep -i strict-transportWas checkfrei prüft
Achte auf max-age, der Wert steht in Sekunden. checkfrei erwartet mindestens sechs Monate, also 15552000 Sekunden (180 Tage). Üblich ist ein Jahr, das sind 31536000. Fehlt der Header oder ist die Zeit kürzer, gibt es eine Warnung. Den Header prüfen wir zusammen mit allen anderen Sicherheitsheadern im kostenlosen Check.
Wichtig zu wissen: Browser beachten den Header nur, wenn er über https kommt. Über http ausgeliefert, wird er ignoriert.
So behebst du es
Wenn du vorsichtig sein willst, setz max-age zuerst auf einen Tag (86400) und erhöhe nach ein paar Tagen ohne Probleme auf ein Jahr.
includeSubDomains dehnt die Regel auf alle Subdomains aus, also auch auf shop., mail., intern. oder die vergessene test.-Umgebung. Kann eine davon kein https, ist sie für alle, die deine Hauptseite schon besucht haben, nicht mehr erreichbar, und zwar für die volle Laufzeit. Geh vorher deine DNS-Einträge durch. Bist du dir nicht sicher, lass den Zusatz weg. In den Beispielen unten steht er, weil die meisten Seiten ihn vertragen.
preload geht noch weiter. Über hstspreload.org trägst du deine Domain in eine Liste ein, die fest in die großen Browser eingebaut ist. Dann gilt HTTPS schon beim allerersten Besuch. Das Austragen dauert allerdings Monate, und preload setzt includeSubDomains voraus. Für die meisten kleinen Firmen ist das unnötig. Wir raten nur dazu, wenn du alle Subdomains sicher im Griff hast.
Apache (.htaccess)
Funktioniert bei den meisten Hostern mit Apache oder LiteSpeed, also auch bei typischen WordPress-Installationen. Die Zeilen gehören in die .htaccess im Hauptverzeichnis, außerhalb des WordPress-Blocks.
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>nginx
Die Zeile gehört in den server-Block für Port 443. Achtung, eine bekannte Falle: Sobald in einem location-Block ein eigenes add_header steht, erbt dieser Block keine add_header-Zeilen aus dem server-Block mehr. Dann fehlt HSTS genau dort.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;WordPress
Am einfachsten ist die .htaccess wie oben. Auf nginx-Hosting gibt es keine .htaccess, dann frag den Hoster oder nimm ein Plugin, das Sicherheitsheader setzt.
Next.js
Über headers() in der next.config. Das wirkt mit next start und auf Vercel. Bei einem statischen Export (output: "export") werden die Header ignoriert, dann setzt du sie beim Hoster.
// next.config.mjs
const nextConfig = {
async headers() {
return [
{
source: "/:path*",
headers: [
{ key: "Strict-Transport-Security", value: "max-age=31536000; includeSubDomains" },
],
},
];
},
};
export default nextConfig;Vercel und Netlify
Beide liefern für eigene Domains in der Regel schon einen HSTS-Header aus. Prüf mit curl, was ankommt. Willst du den Wert ändern, geht das bei Vercel über die vercel.json und bei Netlify über die Datei _headers im Ausgabeordner:
/*
Strict-Transport-Security: max-age=31536000; includeSubDomainsShopify, Wix und Jimdo
Hier kannst du keine eigenen HTTP-Header setzen. Ob HSTS ausgeliefert wird, entscheidet die Plattform.
So prüft checkfrei
Wir suchen den Header Strict-Transport-Security mit einem max-age von mindestens sechs Monaten. Fehlt er, gibt es eine Warnung.
Gewicht 1 von 3 im Bereich Sicherheit.
Häufige Fragen
Wie schalte ich HSTS wieder ab?
Setz max-age=0 und lass den Header so eine Weile laufen. Browser, die deine Seite in dieser Zeit besuchen, vergessen die Regel. Alle anderen halten sich bis zum Ablauf der alten Laufzeit daran. Deshalb vorsichtig anfangen.
Brauche ich HSTS preload?
Für die meisten Websites nicht. Preload schützt zwar auch den allerersten Besuch, ist aber schwer rückgängig zu machen und verlangt includeSubDomains. Ohne genauen Überblick über alle Subdomains würden wir die Finger davon lassen.
Ersetzt HSTS die Weiterleitung auf HTTPS?
Nein. Der Browser kennt die Regel erst nach dem ersten Besuch über https. Neue Besucher und Suchmaschinen brauchen weiterhin die 301-Weiterleitung.
Jetzt deine Seite prüfen
checkfrei prüft HSTS und 68 weitere Punkte in einem Durchgang. Kostenlos und ohne Anmeldung.