Menu Close

Auslesen von HSTS-Informationen aus dem HTTP-Header

In meinem Artikel HTTP Strict Transport Security (HSTS) für Lighttpd aktivieren habe ich beschrieben, was HSTS ist und wie man es auf seinem Webserver aktiviert, um eine bessere Bewertung beim SSL Server Test von Qualys zu erhalten. Nun trat der Fall auf, dass dieser Test für eine andere Webseite die Meldung Invalid HSTS header herausgegeben hat. Die Konfiguration auf dem betroffenen Webserver hat auf den ersten Blick allerdings korrekt ausgesehen. Wie man den HSTS-Header ausliest, um in einem solchen Fall das Troubleshooting zu betreiben, beschreibe ich in diesem Artikel.


Symptom

Der SSL Server Test von Qualys berichtet nach der Konfiguration von HSTS, dass der HSTS-Header ungültig sei.

Abrufen des HTTP-Headers mit cURL

Mithilfe des Kommandozeilenprogramms cURL kann man Dateien von oder zu einem Server zu übertragen. Ruft man es mit der Option -I auf, kann man damit unter anderem den HTTP-Header einer Webseite abrufen. Eine detailierte Beschreibung dieser Funktionalität liefert die Seite haxx.se:

(HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature the command HEAD which this uses to get nothing but the header of a document. When used on an FTP or FILE file, curl displays the file size and last modification time only.https://curl.haxx.se/docs/manpage.html

Der Aufruf dieses Befehls liefert beispielsweise für meine Seite den folgenden Rückgabewert:

$ curl -I 
HTTP/1.1 200 OK
Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
X-Powered-By: PHP/5.5.9-1ubuntu4.19
Set-Cookie: 8b4cc86896af6ff21730a4c7eb47cfa6=gu5h8l90p4il834avfc9v95s23; path=/; secure; HttpOnly
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Content-Type: text/html; charset=utf-8
Expires: Wed, 17 Aug 2005 00:00:00 GMT
Last-Modified: Mon, 12 Sep 2016 10:33:17 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Date: Mon, 12 Sep 2016 10:33:17 GMT
Server: lighttpd/1.4.33

Die Zeile mit Strict-Transport-Security enthält die für uns interessanten Informationen. Möchte man sich ausschließlich diese Zeile anzeigen lassen, kann man mithilfe von grep den Rückgabewert nochmals durchsuchen und filtern. Der vollständige Befehl und der reduzierte Rückgabewert sehen wie folgt aus:

$ curl -s -D-  | grep Strict
Strict-Transport-Security: max-age=63072000; includeSubdomains; preload

Problem und Lösung

Der obenstehende Befehl wurde auf den betroffenen Webserver angewendet und hat dabei den Rückgabewert Strict-Transport-Security: "max-age=63072000" geliefert. Abweichend zu meinem Webserver sind Anführungszeichen um das Attribut max-age herum gesetzt. Nachdem wir die überflüssigen Anführungszeichen aus der Konfiguration entfernt haben, hat der SSL Server Test den Header korrekt eingelesen und hat schlussendlich in der Bewertung A+ resultiert.

Schreiben Sie einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.

Index