Diese Seite beschreibt die Einrichtung von HPKP unter Gentoo Linux für eine SSL geschützte Webseite (StartSSL). Allgemeine Informationen über HPKP findet man hier:

https://developer.mozilla.org/de/docs/Web/Security/Public_Key_Pinning

Im ersten Schritt muss der Apache mit HEADERS kompiliert werden:

# APACHE2_MODULES="headers ..." emerge www-servers/apache -av

Danach aktiviert man das Modul:

# vi /etc/conf.d/apache2
APACHE2_OPTS="-D HEADERS ..."

Jetzt erstellt man die Konfiguration, dazu ist hpkp-gen hilfreich:

# cd /pfad/zum/zertifikat/
# wget https://github.com/hannob/hpkp/raw/master/hpkp-gen

Die ca.pem und sub.class1.server.ca.pem von StartSSL wird von dem Script wegen der Endung nicht erkannt und muss vorher kopiert werden:

# cp ca.pem ca.crt
# cp sub.class1.server.ca.pem sub.class1.server.ca.crt

Jetzt kann man die Konfiguration generieren:

# /bin/bash hpkp-gen bknaus.de.crt sub.class1.server.ca.crt ca.crt
Public-Key-Pins: max-age=5184000; \
  pin-sha256="2g9TQ9EsEXk6CQBA32Q9DAXmyoIsBvxbyLB2NZKGkW8="; \
  pin-sha256="kb6xLprt35abNnSn74my4Dkfya9arbk5zN5a60YzuqE="; \
  pin-sha256="5C8kvU039KouVrl52D0eZSGf4Onjo4Khs8tmyTlV3nU="

Der String muss dann als Header im Apache eingefügt werden:

# vi /etc/apache2/vhosts.d/bknaus.de.conf
Header always set Public-Key-Pins: 'max-age=10; \
  pin-sha256="2g9TQ9EsEXk6CQBA32Q9DAXmyoIsBvxbyLB2NZKGkW8="; \
  pin-sha256="kb6xLprt35abNnSn74my4Dkfya9arbk5zN5a60YzuqE="; \
  pin-sha256="5C8kvU039KouVrl52D0eZSGf4Onjo4Khs8tmyTlV3nU="; \
  report-uri="http://glas.scher.be/hpkp-report/";'

In diesem Fall wurde auch noch eine Report URL angegeben.

Damit die neue Konfiguration aktiv wird, startet man den Apache neu:

# /etc/init.d/apache2 restart

Zum Abschluss kann man die Konfiguration auf https://www.ssllabs.com/ssltest/ testen. Hier sollte folgendes auftauchen:

Muss man das Zertifikat erneuern, sollte vorher der Eintrag um ein Backup-PIN erweitert werden. Nach der Übergangszeit mit beiden PIN's kann man dann das alte Zertifikat löschen.

  • No labels