Cookies Diese Website speichert nur, was sie zum Funktionieren braucht. Derzeit gibt es hier weder Analyse noch Werbung, und nichts davon verfolgt Sie auf andere Websites. Datenschutzerklärung lesen

Auswahl anpassen
+92 312 8299940Kostenloses Angebot
Blog

HSTS: Strict-Transport-Security sicher einrichten

HSTS einfach erklärt: was der Header Strict-Transport-Security schützt, wie Sie ihn in der htaccess setzen und max-age ohne Risiko erhöhen.

By the Denwix team 7 min read

Was ist HSTS?

HSTS steht für HTTP Strict Transport Security. Es ist ein einziger Antwort-Header, Strict-Transport-Security. Er sagt dem Browser: Nutze für diese Website ab jetzt nur HTTPS.

Hat ein Browser den Header einmal gesehen, macht er aus jedem http://-Link ein https://, bevor er etwas sendet. Außerdem lässt er den Besucher eine Zertifikatswarnung nicht mehr wegklicken. Folglich kann niemand diesen Besucher heimlich auf einfaches HTTP zurückholen.

Diagramm: Der Browser erhält den HSTS-Header, merkt sich nur HTTPS und geht danach direkt zu HTTPS
HSTS macht aus einer einmaligen Weiterleitung eine Regel, die sich der Browser merkt.

Die Lücke, die HSTS schließt

Die meisten Websites leiten HTTP schon auf HTTPS weiter. Das ist gut, lässt aber eine Lücke. Die allererste Anfrage geht noch über einfaches HTTP, und erst dann antwortet der Server mit der Weiterleitung.

Im öffentlichen WLAN ist diese erste Anfrage der schwache Moment. Ein Angreifer im selben Netz kann zuerst antworten und den Besucher auf einer falschen HTTP-Kopie Ihrer Seite halten. Diesen Trick nennt man SSL-Stripping.

HSTS entfernt diesen Moment für jeden Besuch nach dem ersten. Weil der Browser die Regel schon kennt, sendet er die HTTP-Anfrage gar nicht mehr. Außerdem fällt der Weiterleitungs-Sprung weg, sodass die Seite auch etwas schneller öffnet.

So setzen Sie HSTS in der htaccess

Stellen Sie zuerst sicher, dass jede Seite über HTTPS funktioniert, auch Bilder, Skripte und genutzte Subdomains. Fügen Sie dann auf Apache eine Zeile in die .htaccess ein:

Header always set Strict-Transport-Security "max-age=300"

Beginnen Sie beim Testen mit kurzen 300 Sekunden. Geht etwas schief, vergessen die Browser die Regel nach fünf Minuten. Auf Nginx gehört dieselbe Zeile in den HTTPS-Server-Block:

add_header Strict-Transport-Security "max-age=300" always;
Demo: Die Header-Prüfung zeigt, dass Strict-Transport-Security nach einer Zeile in der htaccess gesendet wird
Nach einer Zeile in der htaccess wird der Header Strict-Transport-Security gesendet.

Prüfen Sie danach das Ergebnis mit unserem kostenlosen HTTP Header Checker. Er zeigt, ob der Header ankommt und welches max-age er nutzt.

So erhöhen Sie max-age sicher

HSTS ist schnell eingeschaltet, aber langsam wieder aus. Ein Browser behält die Regel für das ganze max-age, selbst wenn Sie den Header entfernen. Erhöhen Sie es deshalb in Stufen:

  1. 300 Sekunden (fünf Minuten) während des Tests.
  2. 86400 Sekunden (ein Tag), wenn nichts kaputtgegangen ist.
  3. 604800 Sekunden (eine Woche) nach ein paar ruhigen Tagen.
  4. 31536000 Sekunden (ein Jahr), wenn jede Seite eine Weile über HTTPS lief.

Ein Jahr ist der Wert, den die meisten Anleitungen für eine Live-Website empfehlen. Zugleich ist er das Minimum für die Preload-Liste.

includeSubDomains und Preload

Die Option includeSubDomains gilt auch für jede Subdomain. Fügen Sie sie nur hinzu, wenn jede Subdomain über HTTPS läuft, auch alte, etwa ein internes Tool oder ein Mail-Panel.

Die Option preload geht noch einen Schritt weiter. Browser haben eine eingebaute Liste von HSTS-Websites, daher nutzt sogar der erste Besuch HTTPS. Allerdings dauert es Monate, von dieser Liste wieder herunterzukommen. Tragen Sie Ihre Domain bei hstspreload.org also nur ein, wenn Sie sicher sind.

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

HSTS auf anderen Servern und CDNs

Die Idee ist überall gleich: einen Header bei jeder HTTPS-Antwort senden. Dabei ändert sich nur der Ort, an dem Sie ihn eintragen.

Cloudflare

Öffnen Sie im Cloudflare-Dashboard SSL/TLS, dann Edge Certificates, und schalten Sie HSTS ein. Wählen Sie dort das max-age. Weil Cloudflare den Header selbst sendet, brauchen Sie keine zusätzliche Zeile in der htaccess.

WordPress

Können Sie den Server nicht bearbeiten, kann ein Sicherheits-Plugin den Header setzen. Trotzdem ist eine Server-Regel schneller, denn sie greift, bevor PHP überhaupt startet.

IIS

Auf Windows-Servern legen Sie in den HTTP-Antwortheadern der Website einen eigenen Header Strict-Transport-Security an. Danach prüfen Sie ihn mit dem Header-Checker.

HSTS testen und wieder entfernen

Testen Sie zuerst von außen mit unserem HTTP Header Checker. Er zeigt den genauen Header und das max-age, das Besucher erhalten.

In Chrome können Sie außerdem chrome://net-internals/#hsts öffnen und Ihre Domain abfragen. Dort sehen Sie, ob der Browser die Regel gespeichert hat und wann sie endet. Auf derselben Seite löschen Sie die Regel für Ihren eigenen Browser, während Sie testen.

Um HSTS für alle zu entfernen, senden Sie eine Weile max-age=0, statt den Header zu löschen. Dann vergisst jeder Browser, der vorbeikommt, die Regel. Erst danach entfernen Sie die Zeile.

Häufige Fehler

  • Mit einem max-age von einem Jahr beginnen. Fällt HTTPS aus, sind Besucher ein Jahr lang ausgesperrt.
  • includeSubDomains setzen, obwohl eine Subdomain noch kein Zertifikat hat.
  • Den Header über HTTP senden. Browser ignorieren ihn dort; er zählt nur über HTTPS.
  • Das Wort always vergessen, sodass Fehlerseiten ohne Header ausgeliefert werden.
  • Die Domain zum Test bei der Preload-Liste eintragen.

Kurz gesagt: HSTS ist eine Zeile, aber max-age ist ein Versprechen. Erhöhen Sie es langsam und prüfen Sie jeden Schritt mit dem HTTP Header Checker. Jede Direktive im Detail erklärt der MDN-Leitfaden zu Strict-Transport-Security.

Fragen und Antworten

Was macht HSTS?

Es sagt dem Browser, für eine bestimmte Zeit nur HTTPS für Ihre Website zu nutzen. Nach dem ersten Besuch sendet der Browser nie mehr eine einfache HTTP-Anfrage an Ihre Seite.

Brauche ich mit HSTS noch eine Weiterleitung von HTTP auf HTTPS?

Ja. Die Weiterleitung deckt den allerersten Besuch ab, bevor der Browser den Header kennt. HSTS deckt jeden Besuch danach ab.

Welches max-age sollte ich für HSTS nutzen?

Beginnen Sie beim Testen mit 300 Sekunden und erhöhen Sie in Stufen. Für eine Live-Website sind 31536000 Sekunden (ein Jahr) der übliche Endwert.

Wie entferne ich HSTS?

Senden Sie den Header mit max-age=0. Browser löschen die Regel beim nächsten Besuch über HTTPS. Bis dahin behalten sie die alte Regel.

Ist HSTS gut für SEO?

Nicht direkt. Es spart wiederkehrenden Besuchern jedoch einen Weiterleitungs-Sprung und schützt sie, was Geschwindigkeit und Vertrauen hilft.

Warum erscheint mein HSTS-Header nicht?

Prüfen Sie, ob er über HTTPS gesendet wird, ob das Apache-Modul headers aktiv ist und ob ein CDN oder Cache ihn entfernt. Unser HTTP Header Checker zeigt, was wirklich ankommt.

Was ist HSTS Preload?

Eine in Browser eingebaute Liste, damit schon der erste Besuch HTTPS nutzt. Sie brauchen max-age von einem Jahr, includeSubDomains und preload und tragen die Domain dann bei hstspreload.org ein.

Kann HSTS Besucher aussperren?

Ja, wenn HTTPS ausfällt, während ein langes max-age aktiv ist. Darum beginnen Sie kurz und erhöhen erst, wenn alles funktioniert.

Macht HSTS meine Website langsamer?

Nein. Es spart wiederkehrenden Besuchern die Weiterleitung von HTTP auf HTTPS, daher öffnen Seiten etwas schneller.

Wo aktiviere ich HSTS bei Cloudflare?

Unter SSL/TLS, Edge Certificates, bei HTTP Strict Transport Security. Dann brauchen Sie ihn nicht auch noch in der htaccess.

Kann ich HSTS mit einem WordPress-Plugin setzen?

Ja, viele Sicherheits-Plugins können ihn senden. Trotzdem ist eine Regel in htaccess oder Nginx schneller und deckt auch Dateien außerhalb von WordPress ab.

Warum wird mein HSTS-Header doppelt gesendet?

Server und CDN oder ein Plugin fügen ihn gleichzeitig hinzu. Behalten Sie nur eine Quelle, damit das max-age eindeutig ist.

Wie sehe ich, ob Chrome meine HSTS-Regel gespeichert hat?

Öffnen Sie chrome://net-internals/#hsts und fragen Sie Ihre Domain ab. Dort können Sie die Regel für Ihren Browser auch löschen.

Funktioniert HSTS auf localhost?

Browser ignorieren HSTS auf localhost und bei reinen IP-Adressen, deshalb testen Sie auf einer echten Domain.

Was passiert, wenn mein Zertifikat bei aktivem HSTS abläuft?

Besucher, die die Regel kennen, können die Warnung nicht wegklicken. Darum ist die automatische Verlängerung mit HSTS noch wichtiger.

Ist HSTS dasselbe wie eine 301-Weiterleitung?

Nein. Die Weiterleitung sendet der Server bei jeder HTTP-Anfrage. HSTS sorgt dagegen dafür, dass der Browser die HTTP-Anfrage ganz auslässt.

Müssen alle Subdomains vor includeSubDomains HTTPS nutzen?

Ja. Prüfen Sie jede Subdomain, auch alte und interne Tools, bevor Sie die Option setzen.

Wie lange dauert die Aufnahme in die Preload-Liste?

Meist einige Wochen bis Monate, denn die Liste kommt mit neuen Browser-Versionen.

Schützt HSTS vor allen Angriffen?

Nein. Es verhindert den Rückfall auf einfaches HTTP. Für andere Risiken brauchen Sie daher weitere Header, etwa eine Content-Security-Policy.

Prüft der SEO Checker HSTS?

Ja. Unser SEO Checker zeigt, ob der Header gesendet wird, und verlinkt diese Anleitung, wenn er fehlt.

Video-Anleitung

So richten Sie HSTS sicher ein

In diesem kurzen Video sehen Sie das Werkzeug vom ersten bis zum letzten Klick. Wählen Sie darunter Ihre Sprache und blenden Sie bei Bedarf Untertitel ein.

Prüfen Sie jetzt Ihren HSTS-Header

Geben Sie Ihre URL in den HTTP Header Checker ein und sehen Sie, ob Strict-Transport-Security gesendet wird und welches max-age gilt.