Drei Tipps für eine sicherere Implementierung von HTTPS

HTTPS setzt sich bei Blog- und Webseitenbetreibern langsam durch. Vor dem Wechsel auf die sichere Verbindung muss eine genaue Planung erfolgen, damit danach auch alles reibungslos funktioniert. Gerade Mixed Content verursacht häufig Probleme. Also Inhalte, wie etwa Werbeanzeigen, iframes oder Assets, die über HTTP-Verbindungen während einer HTTPS-Session geladen werden. Daher empfehle ich vor dem Livegang eine umfassende Testphase. Läuft dann alles sauber, solltest du noch diese drei nachfolgenden Tipps beherzigen.

HTTPS (Quelle: Wikipedia, Liz. CC BY-SA 2.0)

Weiterleitung auf HTTPS serverseitig aktivieren

Wenn du HTTPS auf deiner Seite einschaltest, musst du dem Server mitteilen, dass dieser nur noch HTTPS-Verbindungen akzeptieren darf. Ansonsten können Seitenbesucher deinen Blog oder deine Webseite unbeirrt weiter via HTTP aufrufen. Aus Sicherheitsgründen solltest du dies unterbinden. Mit dem nachfolgenden Snippet kannst du das Apache ganz leicht beibringen.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# redirect www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
#redirect to https
RewriteCond %{SERVER_PORT}   !^443$
RewriteRule  (.*)  https://%{HTTP_HOST}/$1  [R=301,L] 
</IfModule>

HTTPS-Verbindungen zu deiner Domain erzwingen

Wird dein Blog oder deine Webseite via HTTP aufgerufen, erfolgt mit der obigen Anweisung eine Weiterleitung auf HTTPS. Ein Angreifer könnte den Seitenaufruf allerdings auf eine bösartige Seite umleiten. Hier wird von einem sogenannten Man-in-the-Middle-Angriff gesprochen. Du kannst dieses Szenario mit HTTP Strict Transport Security (HSTS) verhindern. Der Server teilt dem Client für die Zukunft über einen HTTP-Header mit, dass dieser zu deiner Domain eine sichere Verbindungen aufbauen soll. Der Client weiß dann automatisch, was zutun ist. Den Header setzt du einfach in deiner .htaccess-Datei. Im Beispiel beträgt die Gültigkeit 365 Tage.

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS

Public Key Pinning einschalten

Neben Downgrade-Attacken hat HTTPS noch eine weitere große Schwäche — die Zertifikatskette ist manipulierbar. Ein Angreifer könnte sich bei deiner Zertifizierungsstelle ein Zertifikat auf deine Domain ergaunern und dann deine Seitenbesucher auf seine bösartige Seite umleiten. Den Besuchern wird das vielleicht nicht mal auffallen. Deshalb solltest du unbedingt Public Key Pinning (HPKP) auf deinem Server einsetzen. Über einen HTTP-Header teilt der Webserver dem Client mit, welchem Zertifikat er vertrauen kann. Am besten nimmst du dein Domain-Zertifikat.

So richtest du Public Key Pinning ein

Du brauchst nur für dein Domain-Zertifikat den Hashwert ermitteln. HPKP setzt noch einen weiteren Hashwert als Backup voraus. Hier kann es sich um ein weiteres Zertifikat, einen weiteren CSR oder einen zusätzlichen Public Key handeln. Wird das aktive Zertifikat kompromittiert, sollte aus dem Backup das neue Zertifikat erzeugt werden. Die Webseite report-uri.io bietet dir ein paar nützliche Tools zur Ermittlung der Hashwerte an.

Mit dem Hash Generator findest du flux die Hashwerte deines Domain-Zertifikates und des Backups heraus. Anschließend trägst du beide Werte in die nachstehende Header-Anweisung ein. Der Client speichert die Pins für zwei Monate ab.

Header always set Public-Key-Pins "pin-sha256=\"base64+primary==\"; pin-sha256=\"base64+backup==\"; max-age=5184000;"

Ruft nun ein Benutzer deine Webseite auf, wird dem Browser der HTTP-Header mitgeteilt. Fortan weiß der Browser, welche Pins für den angegebenen Zeitraum gültig sind. Der Browser prüft nun bei jedem Seitenaufruf, ob einer der Hashwerte zu einem der Zertifikate in deiner Kette passt. Ist dies nicht der Fall, wird die Verbindung verweigert.

Abschließend kannst du die Änderungen an deiner Seite mit der Webseite SecurityHeaders.io oder dem SSL-Test von ssllabs.com auf Herz und Nieren prüfen.


Avatar von reraiseace
Autor: Markus Werner (reraiseace) Twitterreraiseace, Google+reraiseace, Twittercb_werner
Ich bin Redaktionsvolontär bei der COMPUTER BILD in Hamburg, Fernstudent am Deutschen Journalistenkolleg und schreibe auf re{raise}ace privat über Webdesign und Programmierung. Seit 2015 schrieb ich auch regelmäßig für andere Medien.

0 Kommentare – Schreib mir deine Meinung!

Fülle bitte die nachstehenden Felder aus. Angaben mit einem Sternchen sind Pflichtangaben. Deine E-Mail-Adresse wird nicht veröffentlicht.