Pinning von Zertifikaten und öffentlichen Schlüsseln
Das Public Key Pinning erlaubt es Ihnen, Ihr Public-Key-Set für eine künftige SSL/TLS-Verbindung zu Ihrem Host festzulegen.

Was ist HTTP Public Key Pinning?
Mit Public Key Pinning legen Sie fest, welche öffentlichen Schlüssel für künftige SSL/TLS-Verbindungen zu Ihrem Host gültig sind. Diese Erweiterung basiert auf dem HTTP-Übertragungsprotokoll. Das Besondere daran: Der zugreifende Client erfährt erst bei der ersten Kontaktaufnahme, welcher öffentliche Schlüssel für den Verbindungsaufbau vertrauenswürdig ist. Daher wird HTTP Public Key Pinning auch als "Trust on First Use"-Verfahren bezeichnet. Die verifizierte Verschlüsselung -- der sogenannte Pin -- gibt dem Mechanismus seinen Namen. Entscheidend ist, dass die erstellten Pins für einen definierten Zeitraum im HTTP-Header des Clients gespeichert werden.
Wenn der Client erneut eine Verbindung aufbaut, wird die Zertifikatskette noch einmal überprüft. Dieser Vorgang, die sogenannte Pin-Validierung, ist ein zentraler Aspekt des Pinnings und funktioniert im Prinzip wie eine digitale Signatur.
Wie funktioniert Pinning?
Public Key Pinning macht Ihre SSL-Verbindung mithilfe von SSL-Zertifikaten deutlich sicherer. Ziel ist es, zuverlässig zu erkennen, wann sich der öffentliche Schlüssel eines Host-Zertifikats ändert -- etwa wenn ein Angreifer die Zertifizierungsstelle (Certification Authority) kompromittiert hat.
Sobald eine SSL-Verbindung hergestellt ist, prüft der Browser per HTTP Public Key Pinning den gespeicherten Pin des Hostnamens. Auf diese Weise lässt sich feststellen, ob die SPKI-Fingerprints innerhalb der Zertifikatskette korrekt sind. Schlägt die Überprüfung fehl, wird die Verbindung sofort abgebrochen. Verzichten Sie dagegen auf HTTP Public Key Pinning, kommt die Verbindung trotzdem zustande.
Diese Schritte durchläuft das Pinning
Der Ablauf gliedert sich in folgende Schritte:
- Generieren eines privaten Schlüssels -- sowohl eines primären als auch eines Backup-Schlüssels.
- Erstellen der CSRs (Certificate Signing Requests) für beide privaten Schlüssel.
- Generieren der SPKI-Fingerprints für die zugehörigen öffentlichen Schlüssel.
- Anpassen der Virtual-Host-Konfiguration.
- Abschließendes Pinning der öffentlichen Schlüssel.
Grundsätzlich sind eine korrekte Verschlüsselung und eine digitale Signatur unverzichtbar, wenn Sie mit digitalen Daten arbeiten. Das gilt besonders dann, wenn Sie von unterwegs auf Datenpakete zugreifen oder diese remote versenden. In solchen Fällen muss der gesamte Übertragungsweg durchgehend gesichert sein.
Pinning sicher einsetzen
Das Pinning-Verfahren gilt als sichere Methode, um explizit festzulegen, welche Zertifikate eine Website für die verschlüsselte Verbindung akzeptiert. Lässt man den TOFU-Aspekt außer Acht, kann dieser Ansatz das Vertrauensproblem der Public-Key-Infrastruktur lösen. Denn der Browser weiß, welche Domain aufgerufen wurde und welche Zertifikate dafür zulässig sind. Das Ergebnis: Sendet der Server ein unbekanntes Zertifikat, wird die Verbindung sofort abgelehnt.
Auf Tücken im Detail achten
Wichtig zu wissen: Dieses Verfahren kann auch Stolperfallen bergen. Das ist beispielsweise der Fall, wenn Ihre Website die Zertifikate der hinterlegten Pins nicht mehr verwenden kann. Der Browser würde dann Ihre Verbindungsversuche ablehnen -- und Sie könnten die Website erst wieder nutzen, wenn die Pin-Informationen abgelaufen sind.
Deshalb sollten Sie die Vorteile von HTTP Public Key Pinning sorgfältig gegen die Risiken abwägen. Wenn Sie eigene Zertifikate pinnen, müssen Sie den ausgelieferten Header kontinuierlich überprüfen. Neben der sicheren Verwaltung und Ablage Ihrer Pins benötigen Sie einen rollierenden Erneuerungsprozess, der Ihre Pins regelmäßig testet und validiert. Hierfür eignet sich ein Mechanismus mit einem Public-Key-Pins-Report-Only-Header: Das System setzt die Policy nicht zwingend durch, informiert Sie aber über mögliche Verstöße.
Risiken von Pinning
HTTP Public Key Pinning ist nicht ohne Risiko. Bevor Sie auf diesen Mechanismus setzen, sollten Sie prüfen, ob sich Pinning in Ihrem Szenario zuverlässig umsetzen lässt. Folgende Risiken können auftreten:
- Ändert sich der Schlüssel auf dem Server, kann die App Ihr Backend nicht mehr erreichen. Bei regelmäßig rotierenden Schlüsseln oder Zertifikaten wird daraus schnell ein ernsthaftes Problem.
- Nutzen Sie eine Option wie NS Pinned Leaf Identities, legen Sie einen direkten Server-Schlüssel fest. Das vereinfacht das weitere Vorgehen, setzt aber eine extrem sichere Schlüsselverwaltung voraus.
- Bei verwalteten Cloud-Lösungen ist ebenfalls Vorsicht geboten. Handelt es sich um gebrauchsfertige API-Gateways, haben Sie die Schlüssel nur selten selbst in der Hand. Ein typisches Beispiel sind die Root-CA-Zertifikate von Microsoft.
- Fehlerhafte Konfigurationen bergen die Gefahr, dass Sie sich als Websitebetreiber unwiderruflich aussperren. Deshalb sollten Sie hier besondere Sorgfalt walten lassen und das Pinning erfahrenen Experten anvertrauen.
Trotzdem ist das Pinning von Vorteil
Pinning bietet nicht nur im Webumfeld Vorteile -- es gewinnt auch bei mobilen Apps zunehmend an Bedeutung. Denn gerade hier hilft es, die von Apps ausgehenden Risiken gering zu halten. Im App-Kontext profitieren Sie von zwei entscheidenden Vorteilen: Erstens kontrollieren App-Anbieter häufig beide Endpunkte, zweitens steht ein unabhängiger Recovery-Kanal zur Verfügung.
Fazit -- Key Pinning schützt vor bösartigen Zertifizierungsstellen
HTTP Public Key Pinning (HPKP) bietet Ihnen eine Technologie, mit der sich zahlreiche Probleme rund um Zertifizierungsstellen lösen lassen. Es stellt sicher, dass die Nutzer Ihrer Website tatsächlich mit der richtigen Domain verbunden sind -- eine Fälschung ist damit ausgeschlossen. Von den CAs erhalten Sie weiterhin kryptografische Zertifikate.
Dass das Zertifizierungssystem in Verruf geraten ist, liegt vor allem daran, dass bei mehreren Zertifizierungsstellen gefälschte Zertifikate im Umlauf waren. Das Vertrauen in dieses Modell ist daher nur noch eingeschränkt vorhanden. Das Grundproblem liegt in den gängigen Browsern: Sie vertrauen automatisch darauf, dass Hunderte von Zertifizierungsstellen -- einschließlich deren Unterzertifizierungsstellen -- ausschließlich legitime Zertifikate ausstellen.
HTTP Public Key Pinning setzt genau hier an. Die Erweiterung wurde größtenteils von Google-Mitarbeitern entwickelt. Sie nutzten einen vergleichsweise einfachen Mechanismus, um die Sicherheit ihrer HTTPS-Zertifikate zu erhöhen: einen Pin, der im HTTP-Header einer Website mitgesendet wird. Diese kryptografischen Schlüssel werden als Hashes ausgegeben und besitzen einen Zeitwert. So lässt sich sicherstellen, dass Browser nur Verbindungen akzeptieren, deren Zertifikat ein solches Pinning verwendet.
Eine weitere nützliche Funktion: Sie können eine URL hinterlegen, an die eine Meldung gesendet wird, wenn ein Zugriff über ein fehlerhaftes Zertifikat erfolgt. Erhält der Browser eine HTTPS-Verbindung ohne gültigen Pin und ohne übereinstimmendes Zertifikat, erhalten Sie einen JSON-codierten Fehlerbericht.