Heiko Zimmermann
SAP-Berater, System Engineer und Entwickler.

Weblog

Die Public Key Pinning Erweiterung für HTTP (HPKP) ist ein Sicherheitsfeature, das einem Webclient mitteilt, einen spezifischen kryptographischen Schlüssel mit einem bestimmten Webserver in Verbindung zu bringen um Man-in-the-Middle-Angriffe mit gefälschten Zertifikaten zu vermeiden. (Quelle Mozilla)

Inzwischen nutzen wohl die meisten von uns für ihre Websites letsencrypt. Hier lässt sich HPKP im Hiawatha Webserver ganz einfach einrichten.

Man benötigt von letsencrypt zwei Zertifikate. Das lets-encrypt-x3-cross-signed.pem und als Backup das lets-encrypt-x4-cross-signed.pem. Wichtig hierbei ist, dass beide Dateien in ein File geschrieben werden müssen.

Am einfachste macht man das so:

cd /etc/hiawatha && mkdir hpkp && cd hpkp
wget -qO letsencrypt.pem https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem \
  https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem

Dann muss man nur noch in der jeweiligen Konfiguration der VirtualHost in hiawatha.conf die Zeile ergänzen:

TLScertFile = /etc/hiawatha/tls/www.mydomain.com.pem #ist natürlich von letsencrypt 
PublicKeyPins = /etc/hiawatha/hpkp/letsencrypt.pem, 30d

Danach muss Hiawatha nur neu gestartet werden.

Nun kann man z.B. im Firefox in der Netzwerkanalyse für meine Website folgendes sehen:

Public-Key-Pins: pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; pin-sha256="sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis="; max-age=5184000

In der Laufzeitanalyse dürfen dann keine Pin-Fehler auftauchen.