SSL certificaten worden gebruikt om websites en internetverkeer te beveiligen, maar hoe werkt dat precies?
Een SSL certificaat (of beveiligingscertificaat) is een bestand dat wordt gebruikt om een versleutelde verbinding tussen twee partijen te maken. Dit is vaak tussen een bezoeker en een website maar het wordt ook gebruikt om verbindingen tussen servers te leggen, bij het uitwisselen van email, of tussen gebruikers van chat apps zoals WhatsApp of Signal. In dit artikel gaan wij specifiek in op het gebruik bij websites.
Wanneer er tussen een bezoeker en een website gegevens worden gestuurd, bij voorbeeld de inhoud van een pagina of een inzending via een formulier, dan loopt dit verkeer via een aantal tussenstations. Als de verbinding niet versleuteld is dan is het in principe mogelijk voor een derde om dit verkeer af te luisteren. Daarom is het belangrijk dat websites voorzien zijn van beveiligingscertificaten. Wanneer de verbinding is versleuteld dan kan een derde zien dat er data wordt verstuurd maar niet zien wat de exacte inhoud is.
Het protocol dat wordt gebruikt voor deze verbindingen heet Transport Layer Security (TLS), en is een doorontwikkeling van het oudere Secure Sockets Layer (SSL) protocol. De certificaten hebben deze oudere naam behouden.
Hoe werkt SSL/TLS?
Om beter te begrijpen wat de rol van het certificaat is leggen wij hier kort de werking van Transport Layer Security uit.
Wanneer er een verbinding wordt gelegd tussen een bezoeker en een webserver, dan worden een aantal stappen uitgevoerd. De server stuurt het certificaat naar de browser. Deze leest het certificaat en controleert of dit ook geldig is. Hierbij wordt gekeken naar de domeinnaam, de uitgever en de cryptografische sleutel. Hiermee wordt er voor gezorgd dat met de gewenste server gecommuniceerd wordt, en dat het verkeer niet door een kwaadwillende partij of door een fout is omgeleid naar een andere server.
Wanneer de browser heeft geverifieerd dat het certificaat klopt en vertrouwd is, dan volgen stappen waarmee de browser en server sleutels uitwisselen om het verkeer voor dat specifieke bezoek te versleutelen. Hiermee wordt het verkeer niet alleen afgeschermd van derden die proberen mee te luisteren, maar worden de gegevens van verschillende bezoeken ook van elkaar geïsoleerd. Ook al zou een hacker toegang krijgen tot de sleutels van een specifiek bezoek, dan zouden deze geen waarde hebben omdat er voor elk bezoek een nieuwe set aangemaakt wordt.
Certificaataanbieders
In principe kan iedereen zelf certificaten maken. Maar omdat een deel van de waarde van een certificaat de identificatie is, is er een mechaniek nodig waarmee er gecontroleerd kan worden of een uitgegeven certificaat te vertrouwen is. Vergelijk dit met een identiteitsbewijs, als iedereen de mogelijkheid had om voor zichzelf een identiteitsbewijs te maken en zelf te kiezen welke gegevens daarop getoond werden, dan zou de waarde daarvan nihil zijn.
Om ervoor te zorgen dat een bezoeker zeker kan zijn van dat een certificaathouder ook degene is waarvoor die zich uitmaakt worden certificaten gemaakt door een “certificate authority” of CA. Dit is een aanbieder die garant staat voor dat de certificaten die zij uitgeven alleen aan de juiste partijen worden verstrekt. Browserontwikkelaars houden lijsten bij van deze CA’s, zodat ze daarmee kunnen zien of een certificaat wel door een te vertrouwen partij is uitgegeven.
Er zijn echter wel legitieme redenen om eigen certificaten te maken, met name binnen intranetten wordt dit vaak toegepast. Een bedrijf kan immers op computers binnen de eigen organisatie er voor zorgen dat de eigen certificaten als vertrouwd worden gemarkeerd, en hierdoor wordt de verbinding beveiligd. Ook bij communicatie tussen servers is het gebruikelijk om eigen certificaten te gebruiken. In deze situaties is het mogelijk om door een uitwisseling van bestanden tussen de systemen een vertrouwensrelatie te leggen.
Hoe werkt het certificaat
Het certificaat zelf is een bestand dat versleutelde gegevens bevat van de server samen met gegevens van de partij die het bestand heeft gemaakt. Aan de hand van de gegevens kan de identiteit van de server worden bevestigd.
In het geval van onze website staat in het certificaat dat de domeinnaam www.panthera.nl is, dat het certificaat is uitgegeven door Let’s Encrypt, en tot welke datum het certificaat nog geldig is. Hiernaast bevat het certificaat een sleutel van de site zelf, samen met soortgelijke gegevens van de uitgevende partij (Let’s Encrypt). Met deze gegevens is een browser in staat om de controleren of dit ook voor de bezochte site geldig is.
De controle van de domeinnaam en geldigheidsdatums is eenvoudig. Wanneer de domeinnaam in het certificaat niet overeenkomt met de opgevraagde domeinnaam, of wanneer de verloopdatum van het certificaat voorbij is, dan wordt het certificaat als ongeldig gezien.
De controles van de uitgevende partij en van de versleuteling zijn meer uitgebreid. Allereerst zal een browser controleren of de uitgevende partij in een lijst van vertrouwde certificate authorities staat. Alle grote browserontwikkelaars (Apple, Google, Microsoft en Mozilla) houden eigen lijsten bij met enkele tientallen vertrouwde partijen. Wie deze lijsten bekijkt ziet daar grote uitgevers als Comodo, DigiTrust, GlobalSign, maar ook Microsoft en de Staat der Nederlanden. De browser controleert niet allen of de naam van de uitgever klopt, maar ook of de cryptografische handtekening op het certificaat met de juiste uitgever overeenkomt.
De cryptografische handtekening van de bezochte server zelf wordt ook gecontroleerd. Die handtekening is een combinatie van gegevens van de server en van de uitgevende partij. Hierdoor wordt in een stap gecontroleerd of de gegevens van de server kloppen, maar ook of de handtekening daarvan overeenkomt met wat verstrekt zou worden door de uitgevende partij.
Als de domeinnaam niet klopt, als de uitgevende partij niet vertrouwd is, als het certificaat is verlopen, of als de sleutel niet overeenkomt met wat vanuit de uitgevende partij zou worden geleverd, dan kan de browser stellen dat er mogelijk een beveiligingsprobleem is. In dit geval krijgt de bezoeker een grote waarschuwing te zien.

Een dergelijke melding betekent niet noodzakelijk dat de site niet veilig is, en komt vaak doordat het bestaande certificaat niet tijdig hernieuwd is, of door een tijdelijke configuratiefout. De melding is ook geen reden om te vrezen om zelf door een aanval getroffen te worden. Wanneer deze melding getoond wordt dan heeft de browser wel een verbinding gemaakt met de server, maar er is nog geen data van de website verstuurd of ontvangen.
Soorten certificaten
Partijen die certificaten uitgeven hebben vaak verschillende soorten certificaten waarbij het verschil ligt in welke mate er controles worden uitgevoerd vanuit de certificate authority. De meest gebruikte vorm is Domein Validatie (DV). Hierbij wordt gecontroleerd dat de aanvrager van het certificaat de betreffende domeinnaam beheert. Dit kan door controle van DNS gegevens, of controle van het email adres wat als eigenaar van de domeinnaam geregistreerd staat.
Naast deze vorm zijn er twee uitgebreide varianten: Organisatie Validatie (Organisation Validation, OV) en Uitgebreide Validatie (Extended Validation, EV). Bij deze soorten voert de certificate authority extra controles uit door bij voorbeeld het bedrijf te bellen en controle van KvK gegevens. Deze soorten werden eerder vaker gebruikt maar hier vindt op dit moment een verschuiving plaats. Dit komt doordat browsers geen verschil meer tonen tussen de verschillende soorten certificaten. Vroeger werd bij het internetbankieren vaak de bedrijfsnaam van de bank ook in de adresbalk getoond om te laten zien dat dit een EV certificaat had. Tegenwoordig laten alle grote browsers alleen een slotje zien ongeacht het soort certificaat.
Belangrijk om te weten is dat het soort validatie geen effect heeft op de veiligheid van de verbinding. De verbinding die gemaakt wordt met een DV certificaat is even veilig als die met een EV certificaat. Het verschil ligt alleen in hoe uitgebreid bedrijfsgegevens worden gecontroleerd.
Wat heeft mijn website nodig?
Een SSL certificaat is tegenwoordig een basisonderdeel van elk hostingpakket, en er zijn nog weinig redenen voor een zakelijke website om geen SSL certificaat te gebruiken. De meeste hostingpartijen, waaronder Panthera, voorzien websites ook automatisch van SSL certificaten van het type Domein Validatie.
Zoals hierboven genoemd is de toegevoegde waarde van een EV certificaat sterk afgenomen doordat browsers tegenwoordig geen onderscheid meer maken in de weergave van de verschillende soorten. Omdat er hogere kosten gemoeid gaan met een EV certificaat en omdat de encryptie gelijk is voor alle soorten raden wij ook aan om “simpele” DV certificaten te gebruiken.