Public Key Pinning

Je website is voorzien van een SSL certificaat, en ook de verdere beveiliging is helemaal op orde. Maar wat als er voor je website een fraudulent certificaat wordt uitgegeven? Dit voorkom je door het gebruik van public key pinning voor HTTPS.

Wat is Public Key Pinning?

Public key pinning (PKP), ook wel certificate pinning genoemd, is een in 2011 door Google geïntroduceerd systeem waarmee website eigenaren aan kunnen geven welk certificaat of welke certificaat uitgever vertrouwd is voor de desbetreffende website. Bij gebruik van PKP wordt via de HTTP header van de website een public key pin doorgegeven, deze pin verwijst naar een certificaat van de website zelf of naar een root/intermediate certificaat van een voor de website vertrouwde CA. Hierdoor kan de eigenaar van de website aangeven dat maar een specifiek certificaat voor de website vertrouwd mag worden, of dat alleen een certificaat uitgegeven door een bepaalde CA vertrouwd mag worden. PKP staat nog in de kinderschoenen, volgens onderzoek van Netcraft werd het in januari 2016 door slechts 0,099% van de actieve certificaten gebruikt.

Voordelen van HPKP

Het voornaamste voordeel is de toegevoegde veiligheid. Door het leggen van een directe link tussen een certificaat en een hostname wordt het voor aanvallers aanzienlijk moeilijker een Man In The Middle aanval uit te voeren. Een goed voorbeeld uit de praktijk is de Diginotar hack, waarbij derden certificaten uit hebben gegeven voor *.google.com. Ten tijde van deze hack had Google in haar Chrome browser al certificate pinning geimplementeerd voor de Google domeinen, waardoor Chrome gebruikers een melding ontvingen dat het certificaat dat gebruikt werd voor google.com niet het juiste certificaat was. 

Nadelen van HPKP

Een mogelijk nadeel van dit systeem is de striktheid ervan. Een kleine fout kan er toe leiden dat de website geruime tijd onbereikbaar wordt. Een voorbeeld: voor website abc.nl is een pin aangemaakt die aangeeft dat certificaten voor dit domein alleen getekend mogen zijn door een SHA1 intermediate certificaat van Comodo, verder wordt aangegeven dat de pin door een browser bewaard moet worden gedurende 60 dagen. Bij de verlenging van het certificaat kiest de beheerder van de website er echter voor meteen over te stappen op een SHA2 variant van het certificaat, met de daarbij behorende SHA2 intermediate certificaten. De beheerder vergeet hierbij rekening te houden met de ingestelde pin en installeert het nieuwe certificaat met de bijbehorende SHA2 intermediate certificaten. Browsers krijgen vanaf dat moment een certificaat geserveerd dat niet getekend is door het intermediate certificaat zoals deze in de pin is opgenomen waardoor de website niet wordt weergegeven. Omdat de browsers deze pin voor 60 dagen onthouden blijft de website onbruikbaar tot de pin is verlopen.

HPKP instellen

Het instellen van HPKP verschilt per webserver:

 

 

SSLCheck

De SSLCheck controleert of je certificaat goed op je server is geïnstalleerd en of er mogelijke problemen zijn.