Certificaten

Een website geserveerd via HTTPS biedt bescherming voor de bezoekers door het verkeer te versleutelen en te garanderen dat de website die ze bezoeken authentiek is. Het inschakelen van HTTPS staat bij veel website eigenaren bekend als 'het installeren van een certificaat'. Maar wat is zo'n certificaat nou eigenlijk, wat doet het, en waarom is deze nodig?

In dit artikel leggen we uit wat een HTTPS verbinding is, wat een certificaat doet en hoe deze correct gebruikt dient te worden.

Een woord vooraf: de materie rondom certificaten en cryptografie kan vrij ingewikkeld zijn. Om dit artikel beknopt en duidelijk te houden is daarom sommige uitleg versimpeld. Als je meer wilt weten over hoe cryptografie werkt en met name hoe de digitale handtekeningen in een certificaat werken, lees dan eerst ons artikel over cryptografie.


Een kort stukje historie

Het HyperText Transfer Protocol (HTTP) is omstreeks 1989 geïntroduceerd door Tim Berners-Lee die toen werkzaam was voor het CERN onderzoekscentrum. HTTP stelt computers in staat om tekst met opmaak zoals websites uit te wisselen. Een browser haalt met behulp van HTTP een website op bij een webserver.

Van oorsprong is HTTP niet beveiligd, als de informatie tussen de webserver en de browser onderschept wordt kan deze worden meegelezen. Bovendien kan de onderschepte informatie worden aangepast en doorgestuurd, HTTP biedt geen methode om de informatie te authenticeren.

Naarmate wij steeds meer belangrijke zaken via het internet begonnen te doen, zoals het maken van aankopen en het regelen van bankzaken, kwam er behoefte voor een beveiligde variant van HTTP.


Wat is HTTPS?

HTTPS staat voor HyperText Transfer Protocol Secure, het is een uitbreiding op HTTP waarbij de informatie wordt uitgewisseld via een beveiligde verbinding. Deze beveiligde verbinding wordt opgezet met het Transport Layer Security protocol, of TLS in het kort. TLS is de opvolger van het verouderde SSL-protocol, die onveilig is gebleken. Ondanks dat SSL is vervangen met TLS spreekt men vaak nog over SSL-verbindingen en SSL-certificaten wat dus onjuist is.

Ondanks dat SSL is vervangen met TLS spreekt men vaak nog over SSL-certificaten, wat eigenlijk onjuist is.

Bij een TLS-verbinding wordt alle informatie versleuteld met een geheime code die we de sleutel noemen. Om dit te laten werken moeten beide partijen (de server en de browser) deze geheime sleutel hebben. Het probleem is het verkrijgen van deze sleutel. Het zou namelijk bijzonder onpraktisch zijn wanneer u voor elke website eerst contact met de eigenaar zou moeten opnemen om de sleutel te krijgen.

Dit is waarom de browser bij een HTTPS website eerst een protocol doorloopt om op een veilige manier de sleutel met de webserver uit te wisselen. Dit gebeurt via een slimme wiskundige methode bekend als het diffie-hellman-sleuteluitwisselingsprotocol. Dit is een protocol waarmee twee deelnemers over een onbeveiligde verbinding een geheime sleutel kunnen uitwisselen. Hier is echter 1 uitdaging: hoe weet je voordat de beveiligde verbinding is opgezet dat de server waarmee je de sleutel uitwisselt wel de echte server is? Dit is waar het TLS-certificaat zijn intrede doet.


Het TLS-certificaat

Bij HTTPS moet de server zijn identiteit kunnen bewijzen voordat de sleutel wordt uitgewisseld met de browser. Om dit te doen stuurt de webserver een speciaal document bekend als een TLS-certificaat naar de browser. In dit certificaat staan tenminste 3 stukken informatie: de domeinnaam van de website, een digitale handtekening van de webserver en een digitale handtekening van een uitgever van certificaten, bekend als een certificaatautoriteit (CA).

Bij het ontvangen van het certificaat zal de browser bepalen of het certificaat geldig is door te controleren of de domeinnaam in het certificaat klopt, of de handtekening klopt van de webserver en of het de handtekening van de CA wordt herkend. Als alles klopt, begint de sleuteluitwisseling.

Om als eigenaar van een website een certificaat te verkrijgen bij een CA stuur je de CA een Certificate Signing Request (CSR). Dit is een bestand met daarin alle inhoud voor het certificaat (zoals de domeinnaam) en de handtekening van de webserver. De CA controleert of de CSR is opgesteld door de rechtmatig eigenaar van de domeinnaam. Zodra dit is vastgesteld zet de CA de inhoud van de CSR in een certificaat en voegt het zijn handtekening toe. Dit certificaat is dan geldig en kan worden geïnstalleerd op de website.

Het controleren van digitale handtekeningen gebeurd met een techniek bekend als asymmetrische cryptografie, de werking ervan hebben wij uitgelegd in ons artikel over cryptografie . Deze techniek het mogelijk maakt het mogelijk voor browsers om de handtekeningen te controleren op echtheid en of deze kloppen voor het certificaat. Het is niet mogelijk om een digitale handtekening te kopiëren of te gebruiken voor een ander (vals) certificaat.


Soorten certificaten

Als je online zoekt naar het kopen van een certificaat krijg je de indruk dat er veel verschillende soorten certificaten bestaan. Er zijn allerlei marketing kreten en namen bedacht die de indruk moeten geven dat een duurder certificaat veiliger is dan de goedkopere, niets is echter minder waar.

EV-certificaten

Er is 1 noemenswaardig verschil te geven in soorten certificaten, namelijk de aanwezigheid van Extended Validation (EV). Bij een EV-certificaat zal de CA voor het uitgeven van het certificaat een aantal extra controles uitvoeren. Zo zal bijvoorbeeld de bedrijfsnaam worden gecontroleerd en opgenomen in het certificaat. Welke controles er precies worden gedaan is een beetje afhankelijk van de CA. Vanwege het uitvoeren van deze controles zijn er kosten verbonden aan het toevoegen van EV aan een certificaat. Het voordeel van een EV-certificaat was (let op: was) dat het extra vertrouwen kon opwekken bij de bezoeker, omdat de bedrijfsnaam werd weergegeven in de adresbalk van de browser. Veel browsermakers zijn hier echter vanaf gestapt, de bedrijfsnaam wordt vaak helemaal niet meer getoond, vooral op mobiele browsers wegens ruimtegebrek op het scherm. Veiligheidsonderzoekers hebben daarom vraagtekens gezet bij het nut van EV-certificaten anno 2018.

EV-certificaat in Chrome
Figuur: de weergave van de bedrijfsnaam bij een EV-certificaat in Chrome 70.

De naam EV-certificaat is overigens misleidend, dit doet vermoeden dat dit een ander soort certificaat is. EV is een toevoeging aan een certificaat, een extra vermelding van de bedrijfsnaam, maar als het gaat om techniek is een certificaat met EV identiek aan een certificaat zonder EV.

Geldigheid

Een certificaat heeft een verloopdatum. De meeste certificaten zijn 1 jaar geldig, soms kan (tegen extra kosten) een certificaat met een looptijd van 2 jaar worden gekocht. De voornaamste reden van de verloopdatum is dat de achterliggende techniek voor het ondertekenen van certificaten nog wel eens wordt verbeterd, door de levensduur van certificaten te beperken wordt de oudere techniek automatisch uitgefaseerd. Een certificaat met een kortere geldigheid wordt als veiliger worden beschouwd dan een certificaat met een lange geldigheid.

Prijs

De brengt ons op het onderwerp prijs. En we willen nogmaals herhalen: een duurder certificaat is niet per definitie veiliger! In 2016 is de non-profit CA Let's encrypt opgericht, hun doel is alle redenen om géén HTTPS te gebruiken weg te nemen. De certificaten van Let's Encrypt zijn daarom gratis en kunnen geautomatiseerd worden aangeschaft en vernieuwd. De certificaten van Let's Encrypt zijn maximaal 3 maanden geldig en kunnen via diverse software programma's automatisch worden vernieuwd. Als het inrichten van een geautomatiseerd vernieuwingsproces niet gewenst is binnen uw organisatie kun je natuurlijk nog certificaten kopen bij de gebruikelijke CA's en handmatig installeren, vaak kan dit al voor minder dan 10 euro per certificaat per jaar.

Domeinnaam

In een certificaat is het adres van de website opgenomen. Als dit adres niet precies overeenkomt met het adres van de website zal een browser het certificaat niet accepteren. In een certificaat kunnen meerdere adressen worden opgenomen waarvoor het certificaat geldig moet zijn, zo is het voor organisaties mogelijk om meerdere websites met 1 certificaat te kunnen beveiligen. De voornaamste reden om een certificaat met meerdere domeinen te gebruiken is vanwege de aanschafkosten van een certificaat. Tegenwoordig zijn certificaten echter goedkoop of zelfs gratis, het gebruik van hetzelfde certificaat voor meerdere domeinen biedt daarom nog weinig voordelen en wordt afgeraden. De meeste CA's leveren hun certificaten met daarin het www subdomein automatisch opgenomen, waardoor zowel securist.nl als www.securust.nl hetzelfde certificaat kunnen gebruiken, dit is acceptabel. Er zijn ook nog zogenoemde wildcard certificaten die geldig zijn voor alle subdomeinen van een domein, te herkennen aan een sterretje, bijvoorbeeld: *.securist.nl. Het gebruik van wildcard certificaten wordt afgeraden, veel CA's zijn gestopt met deze aan te bieden.


Waar moet je op letten?

Als website bezoeker

Browsers geven aan of je verbinding beveiligd is of niet, vaak met een icoon in de vorm van een hangslot bij de adresinvoer. Voorheen was dit icoon altijd groen gekleurd, maar omdat HTTPS tegenwoordig als de norm wordt beschouwd stappen veel browser makers hier nu vanaf. Zo is in de Chrome browser het icoon tegenwoordig grijs. Bij onbeveiligde verbindingen wordt er meestal een melding weergegeven als not secure, of niet veilig

Wanneer de browser het slot icoontje toont, weet je dat er gebruik wordt gemaakt van HTTPS, en dat het certificaat geldig is. Is er iets mis met het certificaat, dan zal de browser een dringende waarschuwing weergeven en de website niet openen.

adresinvoer in Chrome
Figuur: Het hangslot icoon in de adresinvoer van Chrome is tegenwoordig niet meer groen.

Als website eigenaar

Certificaten hebben een beperkte geldigheidsperiode. Elk certificaat heeft een start- en einddatum, voor het ingaan van de startdatum of na het verstrijken van de einddatum zal een browser het certificaat niet meer accepteren. Controleer de verloopdatum en zorg ervoor dat het certificaat tijdig wordt vernieuwd om te voorkomen dat bezoekers de website niet meer kunnen bereiken.

Een certificaat is geldig voor een specifiek domein. Klopt het domein in het certificaat niet exact met het domein van de website, dan accepteert de browser het certificaat niet. Gebruik waar mogelijk voor elk (sub)domein een apart certificaat.

Een browser komt geleverd met de informatie van de CA's voorgeïnstalleerd, zo kan een browser bepalen of een certificaat ondertekend door een bepaald CA kan worden vertrouwd. Soms besluiten browsermakers dat een CA niet meer betrouwbaar is en verwijderen ze deze CA uit de browser in de eerstvolgende update. Dit is bijvoorbeeld gebeurd na de hack van het Nederlandse DigiNotar in 2011, en het Amerikaanse Symantec in 2018. Hoewel dit altijd ruim van tevoren en herhaaldelijk aangekondigd wordt, bleek uit een rapport dat ruim 3000 Nederlandse websites nog niet hun Symantec certificaten hadden vervangen toen deze CA werd verwijderd uit de bekende browsers.


Conclusie

Een certificaat is benodigd om een website aan te kunnen bieden met een beveiligde verbinding. Het certificaat maakt het mogelijk voor browsers om te bepalen of de webserver (en daarmee de website) authentiek is. Als website beheerder installeer je dit certificaat op de webserver. Als het certificaat niet correct is gebruikt kunnen bezoekers de website niet meer bereiken.

De Securist website veiligheidsinspectie controleert de HTTPS verbinding en het certificaat op ruim 50 punten zodat u zeker weet dat deze correct is ingesteld en zo goed mogelijke veiligheid biedt.


Verder lezen

Zie ook onze andere relevante artikelen:

Léon Melis

Over de auteur:

Léon Melis is inspecteur bij Securist. Securist inspecteert websites, e-mail en domeinen op veiligheid en privacybescherming. Als onderdeel van de veiligheidsinspectie voor websites wordt het certificaat gecontroleerd op correct gebruik.