This page does not exist in English yet. You are reading the Dutch version.
Certificates and certificate authorities
Links van de adresbalk staat een slotje. Klik erop en je browser zegt dat de verbinding beveiligd is. Maar beveiligd met wie? Iemand kan een site neerzetten die er precies zo uitziet als die van je bank, met net zo goede encryptie. Wat je browser daar in een tiende van een seconde controleert, is een certificaat: een getekende verklaring dat de sleutel aan de andere kant bij die naam hoort. Dit hoofdstuk haalt zo'n verklaring uit elkaar, veld voor veld.
Woorden die je zo nodig hebt
- Certificaat
- Een bestandje met daarin: een naam, een publieke sleutel, een periode waarin het geldt, en een handtekening van iemand anders. Meer is het niet.
- Certificatieautoriteit (CA)
- De instantie die dat bestandje ondertekent. Zij controleert eerst of de naam klopt, en zet er dan haar handtekening onder. In het Engels certificate authority.
- X.509
- Het formaat waarin zo'n certificaat geschreven is. Eén afspraak, overal ter wereld dezelfde: op websites, op je identiteitskaart, in je wifi-instellingen op school.
- Subject en issuer
- De twee namen in elk certificaat. De subject is over wie het gaat; de issuer is wie het getekend heeft.
- Wortelcertificaat
- Een certificaat dat zichzelf ondertekent: subject en issuer zijn dezelfde naam. Er zit niemand boven. Ruim honderd daarvan zitten ingebakken in je besturingssysteem en je browser.
- Intrekken
- Een certificaat ongeldig verklaren vóór de einddatum, bijvoorbeeld omdat de private sleutel gestolen is. Heet ook revocatie.
- DER en PEM
- Twee verpakkingen van hetzelfde certificaat. DER is de rauwe bytes; PEM
is diezelfde bytes in base64 (hoofdstuk 1) met
een regel
-----BEGIN CERTIFICATE-----ervoor, zodat je het in een e-mail kan plakken.
Het gat dat een handtekening laat
In hoofdstuk 7.1 heb je zelf iets ondertekend en daarna geverifieerd. Wat die controle je vertelde, was dit: de persoon die dit tekende had de private sleutel die bij deze publieke sleutel hoort. Dat is alles. Er stond geen naam bij. Zet ik een sleutelpaar (hoofdstuk 6) in elkaar en beweer ik dat het van jouw bank is, dan kloppen al mijn handtekeningen perfect — tegen míjn sleutel.
Een certificaat vult dat gat op de enige manier die werkt: iemand anders verklaart het, en ondertekent die verklaring. Een certificaat is dus niets nieuws. Het is het vorige hoofdstuk, toegepast op een zin die zelf over een sleutel gaat:
"De publieke sleutel A1B2… hoort bij www.mijnbank.be, van 1 maart tot 30 mei."
— ondertekend door: Let's Encrypt
Wat er letterlijk in staat
Een X.509-certificaat bestaat uit drie delen: een blok met alle gegevens, de
naam van het gebruikte handtekeningsysteem, en de handtekening zelf. Dat
gegevensblok heet tbsCertificate, van to be signed: dit
is precies het stuk waar de hash (hoofdstuk 2) over
berekend wordt vóór er getekend wordt. Verander er één byte aan en de
handtekening klopt niet meer.
| Veld | Wat erin staat |
|---|---|
version |
Bijna altijd v3. Dat is de versie die extensies toelaat, en zonder extensies werkt geen enkele moderne site. |
serialNumber |
Een nummer dat de uitgever nooit twee keer gebruikt. Het is ook onvoorspelbaar gekozen, want daardoor kan een aanvaller niet vooraf uitrekenen wat er getekend zal worden. |
issuer |
De naam van wie tekent. Dit is de schakel naar boven in de ketting. |
validity |
Twee tijdstippen: notBefore en notAfter. Buiten
dat venster is het certificaat waardeloos, ook al klopt de handtekening. |
subject |
Over wie het gaat: een domeinnaam, een bedrijf, of bij je identiteitskaart een persoon. |
subjectPublicKeyInfo |
De publieke sleutel zelf, plus welk systeem het is: RSA van zoveel bits, of ECDSA op kromme P-256. Dit is waar het hele certificaat om draait. |
extensions |
Losse extra velden. Zie hieronder. |
signatureAlgorithmsignatureValue |
Waarmee er getekend is, en de handtekening. Let op: dit is de handtekening van de uitgever over alles hierboven — niet iets wat de eigenaar zelf gezet heeft. |
De drie extensies die er in de praktijk het meest toe doen:
| Extensie | Waarvoor |
|---|---|
subjectAltName (SAN) |
De domeinnamen waarvoor dit certificaat geldt. Browsers kijken hier, en alleen hier. Eén certificaat kan er tientallen dekken. |
keyUsage |
Wat je met de sleutel mag doen: handtekeningen zetten, andere
certificaten tekenen, intrekkingslijsten tekenen. Een sleutel die alleen
digitalSignature mag, mag geen certificaten uitgeven. |
basicConstraints |
Staat er CA=JA, dan mag deze houder zelf certificaten
uitgeven. Staat er CA=NEE, dan is dit een eindstation. Dit
ene veldje is het verschil tussen een gewone website en een instantie
die voor de hele wereld mag tekenen. |
Een aantal extensies is kritiek gemarkeerd. Dat betekent: wie deze extensie niet begrijpt, moet het certificaat weigeren. Zo kan er later iets bijkomen zonder dat oude software er stilletjes overheen leest.
De ketting: van website tot wortel
Let's Encrypt tekent niet rechtstreeks met de sleutel die in jouw browser zit. Er zit een schakel tussen:
- Eindcertificaat — subject: een domeinnaam, bijvoorbeeld
www.ict-health.be. Issuer: een tussencertificaat. Geldig een paar maanden. - Tussencertificaat — bijvoorbeeld subject
R11, issuerISRG Root X1. Geldig van 13 maart 2024 tot 12 maart 2027. Welke tussencertificaten er precies zijn, wisselt; soms zitten er twee onder elkaar. - Wortelcertificaat — subject én issuer:
ISRG Root X1. Geldig van 4 juni 2015 tot 4 juni 2035. Dit certificaat staat al in je computer voor je hem voor het eerst aanzet.
Elke stap controleert je browser met de publieke sleutel uit de stap erboven. Bij de wortel houdt het op: die handtekening is van de wortel zelf, dus daar bewijst niets meer iets. Je gelooft hem omdat Microsoft, Apple, Google of Mozilla besloten hebben hem mee te leveren. Dat is geen wiskunde meer, dat is een beslissing van een bedrijf.
Hoeveel van die wortels vertrouw je zonder het te weten? In de lijst die Mozilla op 13 augustus 2026 publiceerde staan er 121. Elk van die 121 kan voor élke website ter wereld een geldig certificaat maken. De ketting is zo sterk als de zwakste wortel.
Waarom die tussenstap? Omdat de private sleutel van de wortel offline ligt, in een kluis, in een apparaat dat hem niet vrijgeeft. Die van het tussencertificaat staat wél online en tekent de hele dag door. Raakt die gestolen, dan trek je het tussencertificaat in en maak je een nieuw. De wortel — en daarmee elk toestel ter wereld — hoeft niet aangeraakt te worden.
Kijk zelf in een certificaat
Alles gebeurt in je browser. Er wordt niets naar de server gestuurd.
- In het veld staat al een echt certificaat:
R11, het tussencertificaat van Let's Encrypt. Klik Ontleed dit certificaat. - Kijk naar subject en issuer. Ze verschillen: dit certificaat is getekend door ISRG Root X1.
- Klik Wortelcertificaat. Nu zijn subject en issuer dezelfde naam — en die naam is precies de issuer van daarnet. Dat is één schakel van de ketting, met je eigen ogen.
- Kijk bij de extensies naar
basicConstraints. Bij allebei staat erCA=JA: deze twee mógen tekenen. - Verander één letter in de base64-tekst en klik opnieuw. De lengtes in het formaat kloppen dan niet meer en je krijgt een fout — geen half resultaat.
- Wil je een
subjectAltNamezien? Klik op het slotje in je adresbalk, exporteer het certificaat van deze of een andere site, open het bestand in een teksteditor en plak het hier.
Wie zijn die autoriteiten, en wat controleren ze?
Een CA verkoopt geen encryptie. Ze verkoopt een controle. Alles hangt af van hoe grondig die controle is, en dat verschilt enorm.
| Wat wordt gecontroleerd | Hoe | Wat je er dus aan hebt |
|---|---|---|
| Een domeinnaam, bij Let's Encrypt | De CA geeft je een willekeurig nummer. Jij zet het op
http://jouwdomein/.well-known/acme-challenge/… of in een
DNS-record. De CA haalt het op vanaf meerdere plekken op de wereld
tegelijk. |
Dat je de baas bent over dat domein. Niet wie je bent. In het certificaat staat daarom letterlijk "domeingevalideerd". |
| Een persoon, bij je identiteitskaart | Je bent met je papieren naar het gemeentehuis gestapt, een ambtenaar heeft je gezicht gezien, en de Staat wist al wie je was. | Je echte naam en rijksregisternummer. Daarom is dat certificaat juridisch iets waard — zie hoofdstuk 8.2. |
De eerste controle kost niets en duurt dertig seconden; de tweede kost een gang naar het gemeentehuis. Ze zijn allebei nuttig, maar ze bewijzen iets compleet anders. Een slotje in je browser zegt dus niet dat het bedrijf erachter deugt — alleen dat de naam in de adresbalk klopt.
Wat er gebeurt als er één faalt
DigiNotar was een Nederlandse certificatieautoriteit uit Beverwijk. Ze tekende onder meer voor de Nederlandse overheid: DigiD, de dienst waarmee Nederlanders bij de belasting inloggen, hing eraan.
Op 19 juli 2011 merkte het bedrijf dat er ingebroken was in zijn systemen. Het
zweeg. Op 10 juli was er al een vals certificaat voor
*.google.com uitgegeven. Eind augustus liep een gebruiker in Iran
tegen een waarschuwing van Chrome aan: die browser wist welke certificaten bij
Google hoorden, en dit was er geen van. Toen kwam het uit. Er bleken minstens
531 valse certificaten gemaakt te zijn. Met het
Google-certificaat was het mailverkeer van naar schatting 300 000 Iraanse
Gmail-gebruikers meegelezen — in een land waar dat mensen hun vrijheid kan
kosten.
De browsermakers gooiden daarop alle DigiNotar-certificaten uit hun lijst. Daarmee was het bedrijf waardeloos: een CA die niemand nog vertrouwt, verkoopt niets meer. Op 20 september 2011, nog geen maand na de ontdekking, werd DigiNotar failliet verklaard.
Eén CA die faalt, breekt niet haar eigen klanten maar iedereen. Dat is de prijs van een systeem waarin 121 wortels allemaal alles mogen. Sindsdien moeten CA's elk uitgegeven certificaat in openbare logboeken zetten — Certificate Transparency — zodat Google kan zien dat er ergens een certificaat voor google.com gemaakt is dat Google niet besteld heeft. Je ziet die logboekbewijzen in de demo staan bij een certificaat van een echte website.
Intrekken: ongeldig vóór de einddatum
Een private sleutel kan uitlekken. De houder kan stoppen met bestaan. Dan moet
het certificaat onmiddellijk ongeldig zijn, en niet pas op
notAfter. Dat is lastiger dan het lijkt, want het certificaat
zelf verandert niet — het ligt bij de aanvaller op schijf en ziet er nog
perfect uit. Er moet dus iets bijkomen dat zegt: geloof dit niet meer.
| Manier | Hoe | Probleem |
|---|---|---|
| CRL certificate revocation list |
De CA publiceert een lijst met ingetrokken serienummers. Je browser haalt die lijst op en kijkt of jouw serienummer erin staat. | De lijst is groot en loopt achter op de werkelijkheid. |
| OCSP online certificate status protocol |
Je browser vraagt het per certificaat live aan de CA: is dit nog geldig? | Je vertelt de CA daarmee welke sites je bezoekt. En als de CA niet antwoordt, gaan browsers toch door — anders lag het halve web plat. |
Dat tweede bezwaar heeft gewonnen. Let's Encrypt heeft op 7 mei 2025 de
OCSP-adressen uit zijn certificaten gehaald en op 6 augustus 2025 de dienst
helemaal uitgezet, met de privacy als reden. In de demo zie je het terug: bij
een certificaat van een echte website staat er wel een
cRLDistributionPoints, geen OCSP-adres.
De echte oplossing bleek simpeler: maak certificaten zo kortlevend dat intrekken er nauwelijks meer toe doet. Een certificaat dat na enkele maanden vanzelf verloopt, is een gestolen sleutel die vanzelf verschraalt. Daarom vernieuwt een server zijn certificaat tegenwoordig automatisch, ruim voor het afloopt, zonder dat er een mens aan te pas komt.
Dit is wiskunde: vertrouwen als een gerichte graaf
Teken elk certificaat als een pijl: van de issuer naar de subject. Wat je krijgt is een gerichte graaf — punten met pijlen ertussen — en de vraag "mag ik deze website geloven?" wordt de vraag "bestaat er een pad van een punt dat ik al vertrouw naar dit punt?". Dat is precies het soort vraag waar de grafentheorie over gaat, hetzelfde vakgebied dat uitrekent hoe je routeplanner de kortste weg vindt.
Zo wordt ook meteen zichtbaar waar het misging bij DigiNotar. In deze graaf zijn er 121 punten waar een pad kan beginnen, en vanuit elk van die punten is elk ander punt bereikbaar. Eén gecompromitteerd startpunt volstaat om een pad te fabriceren naar om het even welke naam. De wiskunde vertelt je hier niet hoe je iets beveiligt, maar hoe kwetsbaar de vorm van je systeem is — en dat is even nuttig.