HSTS Protokoll einrichten

Heutzutage sollte man seine eigene Webseite mit SSL/TLS absichern. Egal welche Informationen sich darauf befinden, jede Webseite sollte seinen Besuchern die Sicherheit der verschlüsselten Dateiübertragung bieten.

Mit HSTS gibt es ein noch relativ junges Protokoll, welches von den gängigen Browsern unterstützt wird. ​Nach erfolgreicher Implementation werden alle Zugriffe automatisch über https:// geladen. Wie dies funktioniert zeige ich Euch in diesem Beitrag.

Was ist HSTS?

Aktuell besteht das Problem, dass ein Besucher der eigenen Webseite im Browser den Domainnamen eingibt, oder über einen Link von einer anderen Webseite zu eigenen Webseite ​kommt. Sofern der Link oder die direkte Eingabe in der URL-Zeile aber nicht explizit mit https://www.domain.de , also mit der Protokollangabe https:// erfolgt, landet der Besucher automatisch auf der unverschlüsselten http://www.domain.de . ​Normalerweise hat man eine Rewrite Regel eingefügt, welche den Besucher autoamtisch auf die verschlüsselte https://www.domain.de Seite um lenkt.Soweit so gut, der Besucher ist nun auf der verschlüsselten Seite und alles im grünen Bereich.

Aber genau hier ist das Problem, dass der erste Zugriff auf eine Webseite somit immer unverschlüsselt erfolgt und Dritten die Möglichkeit gibt, einzusehen, welche URL aufgerufen wurde.Hier kommt HSTS zum Einsatz.

Wie funktioniert HSTS?

Um  HSTS (HTTP Strict Transport Security) zu nutzen, wird in der .htaccess Datei des Webservers ein entsprechender Eintrag gesetzt, welcher der Browser beim allerersten Aufruf der Domain interpretiert und sich dann intern einen Vermerk anlegt, dass diese Domain in Zukunft ausschließlich über https:// geladen wird.

Hierzu führt der Browser eine interne Tabelle, mit allen Domains, welche in Zukunft ausschließlich über SSL/TLS Protokoll geladen werden sollen.

Wie der aufmerksame Leser sicherlich nun schon bemerkt hat, ist aber auch ​der allererste Zugriff noch nicht gesichert, sondern es wird erst ​beim zweiten Aufruf der Seite, wenn der Besucher wieder kommt, verschlüsselt. A lso prinzipiell nur eine kleine Verbesserung.

Wie erreiche ich nun, dass auch der allererste Zugriff auf meine Webseite immer verschlüsselt erfolgt?

Preloading ist das Zauberwort. Wir geben der Header Anweisung zusätzlich den Parameter „preloading“ mit. Dann tragen wir die eigene Domain noch auf den zugehörigen Webservice ein.

Was nun passiert ist, dass die Domain in eine große Liste mit aufgenommen wird, welche bei jeder neuen Browserinstallation, bzw. Update des Browsers mit ausgeliefert wird. Somit „weiß“ in Zukunft der Browser welche Webseiten „https only“ sind. Somit sieht der Browser beim Aufruf der Domain erst in seiner Liste nach, ob die Domain immer mit https:// geladen werden soll. ​Egal, ob ein gesetzer Link auf einer anderes Seite mit http:// ​angegeben wurde​ oder die Eingabe der Domain in den Browser erfolgte. Ab sofort kann die Webseite nur noch mit https:// verschlüsselt aufgerufen werden.

Was sind die Voraussetzungen für HSTS?

Kurz zusammengefasst, muss man folgende Voraussetzungen erfüllen:

  1. Die Seite muss ein gültiges SSL-Zertifikat haben
  2. Es muß ein Redirect von http auf https geben
  3. Alle Subdomains benötigen ebenfalls ein SSL-Zertifikat
  4. Ein Header muss in der .htaccess Datei gesetzt werden, der folgende Werte aufweist:
    • Das max-age muss mindestens 18 Wochen betragen (10886400 Sekunden)
    • Die includeSubDomains Direktive muss spezifiziert sein
    • preload Direktive muss spezifiziert sein

Was muss ich beachten, wenn man HSTS aktiviert?

Ganz wichtig ist, wenn man sich für diesen Schritt entscheidet, dass man in Zukunft immer ein gültiges SSL-Zertifikat für alle Subdomains benötigt, also z.B. www.meinedomain.de intern.meine.domain.de home.meinedomain.de usw. Ohne gültiges SSL-Zertifikat kann sonst die Webseite nicht mehr aufgerufen werden, dies lässt sich auch nicht mehr umgehen, dass einzigste was man dann noch machen kann, ist den HSTS Eintrag wieder herauszunehmen (bzw. die Laufzeit auf 0 zu setzen und eine E-Mal an das  Support-Team von Google Chromium schreiben, dies wieder zu löschen.  Nur das löschen der .htaccess Regeln, bringt nichts mehr und kann zu Fehlern führen. Besser ist es heutzutage aber, dass alle Subdomains immer mit einen gültigen SSL-Zertifikat ausgestattet sind. In Zeiten von Let’s Encrypt sollte dies ja auch kein Problem mehr darstellen.

Was muss ich nun einstellen, dass HSTS aktiviert wird?

Zwei Schritte sind hierfür notwendig:

Im ersten Schritt tragen wir  In der .htaccess folgende Zeilen ein:

Header always set Strict-Transport-Security: „max-age=31536000  includeSubDomains; preload“ env=HTTPS<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{HTTPS} offRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]</IfModule>

Dies muss ganz oben in der .htaccess eingetragen sein.

In Zeile 1 weisen wir HSTS an für ca. 365 Tage ab dem Zugriff gültig zu sein, und das alle Subdomains auch SSL gesichert sind. Zusätzlich setzen wir damit das Preload-Flag, welches wir später benötigen und geben dem Apache die Anweisung dies nur auszuführen, wenn das aktuelle Protokoll https ist (env=https). Somit wird es nicht geladen, wenn ein Besucher über http:// kommt.

in den nächsten Zeilen, schreiben wir weiterhin alle Zugriffe welche unverschlüsselt eintreffen ({HTTPS} off), auf https://domain.de umgeschrieben werden. Somit fangen wir auch alle Browser und Bots ab, die kein HSTS unterstützen.

Im zweiten Schritt tragen wir die Domain (meinedomain.de ohne Subdomain) noch bei https://hstspreload.appspot.com/ ein und bestätigen dies. Sofern die Webseite alles in grün darstellen ist alles OK, sollte es Fehler geben, müssen diese noch behoben werden.

hsts test bei erfolgreicher einbindung

HSTS Meldung bei erfolgreicher Einbindung

​Mit welchen Browsern ist HSTS kompatibel?

HSTS wird von den modernen Browsern wie Microsoft Edge/Chromium Edge, Google Chrome, Mozilla Firefox, Apple Safari und den meisten Opera Browsern standardmässig unterstützt. Somit hat man eine sehr hohe Reichweite abgedeckt. Die restlichen Browser können wir auch noch abfangen.Hier erhaltet Ihr eine Liste der HSTS-fähigen Browser.

Was bietet HSTS für Vorteile?

  • Die Besucher haben die Sicherheit, dass niemand außer der Besucher selbst und der evtl. der Webseitenbetreiber über die Webstatistik wissen, wann von wem welche URL aufgerufen wurde
  • Es fällt ein Redirect von http auf https ​weg und erhöht damit minimal die Ladegeschwindigkeit.
  • Google wertet Seiten mit SSL-Zertifikat im organischen Suchindex höher ein, somit verschafft man sich einen kleinen Vorteil vor der Konkurrenz, die noch kein SSL-Zertifikat hat. Ddies hat aber nicht unbedingt was mit HSTS zu tun
  • Man macht dies nicht für sich selbst, sondern für seine Besucher, dies schafft Vertrauen, weil einen die Besucher es Wert sind, dass diese alle Ihre abgerufenen Informationen auch verschlüsselt erhalten.

​That’s it 🙂 Über Kommentare würde ich mich freuen.


Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert