Uw Gids voor X509-certificaten (Voor stervelingen)

Als je een goed begrip hebt van wat een X509-certificaat is, steek dan je hand op. Nu we hebben vastgesteld dat niemand zijn hand opsteekt, laten we dat veranderen.

Certificaten zijn een complex onderwerp en vaak niet goed begrepen. Deze tutorial heeft tot doel dat te veranderen door je X509-certificaatvoorbeelden te tonen, PKI-certificaten te demonstreren en nog veel meer.

In dit artikel krijg je een goed overzicht van X509-certificaten. Tegen het einde begrijp je hoe ze op een hoog niveau werken. Je wordt geen expert in één artikel, maar aan het einde van dit artikel ben je tenminste vertrouwd met de juiste terminologie.

Gerelateerd: Beheer van Certificaten met Windows Certificate Manager en PowerShell

Openbare en private sleutels: Bescherming van activa

Elke uitleg over X509-certificaten zou onvolledig zijn zonder eerst te vermelden sleutels. Je hebt mogelijk gehoord van het concept van sleutels wanneer termen als privé en openbare sleutels worden gebruikt. Maar wat is precies een sleutel en hoe relateert het zich aan certificaten?

Om de verbinding gemakkelijker te maken, laten we het concept van sleutels uitleggen aan de hand van een ouderwets deurslot.

Als je een nieuw deurslot koopt, wordt dat geleverd met een deursleutel. Die sleutel is uniek voor dat slot, zodat niemand anders het kan ontgrendelen.

Denk aan het slot zelf als een openbare sleutel. Wanneer geïnstalleerd, kunnen jij, je familie of voorbijgangers het slot op je deur zien. Iedereen kan het slot zien en zelfs proberen het te ontgrendelen, maar ze zullen niet slagen. Om het te ontgrendelen, moeten ze de unieke deursleutel invoegen die oorspronkelijk bij het slot werd geleverd. De unieke sleutel die bij het slot werd geleverd, is de privésleutel.

De privé- en openbare sleutel worden samen aangeduid als een sleutelpaar.

Sleuteluitwisseling

Wanneer de deursleutel in het slot wordt gestoken, kun je die handeling beschouwen als het uitwisselen van sleutels. De privésleutel (deursleutel) moet worden uitgewisseld met de openbare sleutel (slot) om de deur te ontgrendelen.

In de cryptografiewereld geef je vrijelijk een openbare sleutel uit en houd je de privésleutel voor jezelf. Je geeft immers niet om wie het slot ziet, maar je geeft zeker om wie het kan ontgrendelen (sleutels uitwisselen).

Er zijn verschillende manieren waarop sleutels worden uitgewisseld, zogenaamde sleuteluitwisselingsalgoritmen. Sleuteluitwisselingsalgoritmen richten zich op het afleiden en veilig verzenden van een uniek gedeeld geheim.

Twee populaire sleuteluitwisselingsalgoritmen die je misschien hebt gehoord, zijn Diffie-Hellman (DH) en Elliptic Curve Diffie-Hellman (ECDH).

Sleutelvertrouwen

Als je wilt dat iemand door de deur gaat, geef je ze de sleutel (of een kopie van de originele, unieke sleutel). Je geeft je sleutel alleen aan degenen die je vertrouwt. De persoon die de privésleutel (deursleutel) vasthoudt, is vertrouwd om het deurslot (openbare sleutel) te ontgrendelen.

Sleutelgebruik

Het gebruik van de sleutel bepaalt het doel van het X509-certificaat, dit komt overeen met de algoritmen die het certificaat zal gebruiken. Het uitgebreide sleutelgebruik (EKU) bepaalt de beoogde doeleinden voor de openbare sleutel naast het sleutelgebruik.

X509-certificaten: Openbare sleutel “Containers”

Hoe verhouden privé- en openbare sleutels zich tot het concept van een X509-certificaat? Denk aan een certificaat als simpelweg een openbare sleutel. Een certificaat is de “omhulling” die een openbare sleutel samen met enkele andere informatie over de sleutel vasthoudt, zoals aan wie de openbare sleutel is uitgegeven, wie de sleutel heeft ondertekend enzovoort. Certificaten worden opgeslagen in de vorm van bestanden.

We zullen later een paar goede voorbeelden van X509-certificaten behandelen.

Heb je ooit een bestand gezien met een PEM- of CER-certificaatbestandsextensie? Dat zijn certificaten (openbare sleutels). Je leert later meer over deze formaten.

De openbare sleutel op zichzelf is niet per definitie een certificaat. Het is de openbare sleutel en de bijbehorende attribuutgegevens gecombineerd die een certificaat definiëren.

A certificate provides a standardized and secure format to communicate with specific systems along with the attributes to help validate a key pair trust. How certificates are built are defined within the X.509 standards, as you will read about later.

Duimafdruk: Unieke identificator van een certificaat

Elk X509-certificaat is bedoeld om identificatie van een enkele entiteit te bieden. Het certificaat moet ervoor zorgen dat elke openbare sleutel uniek identificeerbaar is.

A certificate thumbprint or fingerprint is a way to identify a certificate, that is shorter than the entire public key. Technically, a serial number is as well but you’ll learn about that when it comes to certification authorities (CAs). The thumbprint is a hash of a DER-encoded certificate in Windows.

Het concept van het identificeren van een grotere dataset door een kleiner uniek identificatiemiddel is het algemene computertopic van vingerafdrukken. De blog van Morgan Simonson gaat dieper in op de duimafdruk.

Onderwerp: Definiëren van Belangrijke X509-Certificaatkenmerken

Elk X509-certificaat moet niet alleen een unieke identificatie hebben, maar ook antwoord geven op vragen zoals hieronder. Het certificaatonderwerp zou precies dat moeten doen.

  • Wie zou dit certificaat moeten gebruiken?
  • Welke organisatie moet worden vertrouwd?
  • Welke gebruiker moet dit certificaat presenteren?

Het onderwerp is wellicht het belangrijkste deel van een certificaat. Het onderwerp is bedoeld om attributen te hebben, gedefinieerd door X.500, die vertegenwoordigen aan wie of wat het certificaat is uitgegeven. Het wordt weergegeven in een gedistingeerde naam (DN)-indeling.

A certificate subject is a string value that has a corresponding attribute type. For example, the DN for State or Province is st. This attribute type contains the full name of the state or province the subject resides in (e.g. ST=California).

Deze attribuuttypes en waarde-indelingen zijn gedefinieerd door de aanbevelingen van ITU-T X.520. Een aanvullende referentie is RFC 4519 voor specifieke aanbevelingen van attribuuttypes en waarde-indelingen.

Aangezien X509-certificaatstandaarden geen regels zijn, alleen sterke suggesties, gebruiken veel mensen hun eigen oordeel bij het definiëren van een onderwerp. Het onderwerp moet specifiek de eindentiteit identificeren die u vertrouwt. Als het onderwerp dit niet vertegenwoordigt, hoe kunt u dan iets vertrouwen dat de gepresenteerde openbare sleutel gebruikt?

Met andere woorden, als u meerdere mensen dezelfde gebruikersnaam laat gebruiken om toegang te krijgen tot een systeem, kunt u geen enkele specifieke persoon verantwoordelijk houden voor hun acties. Deze praktijk compliceert het vertrouwensmodel waarmee certificaten bedoeld zijn om uit te lijnen.

Je kunt een voorbeeld zien van hoe Windows een X509-certificaat vertegenwoordigt, en meer specifiek het certificaatonderwerp, in de onderstaande schermafbeelding.

X509 certificate example

Het bekijken van de kenmerken van een certificaat met de Cryptext.dll.

Onderwerp Alternatieve Naam (SAN)

A SAN is a certificate extension that allows you to use one certificate for multiple subjects that’s typically identified with a Subject Key Identifier (SKI). The example below shows some of the SANs Google uses. Adding more domains to a certificate essentially tells the certificate to trust each subject to use the same private key.

A SAN can also have several types other than DNS names called GeneralNames. GeneralNames require the client reading the certificate to support SANs using GeneralNames. Most clients such as web browsers only focus on the DNS name SAN.

Je kunt de SAN hieronder zien in dit X509-certificaatvoorbeeld.

Subject Alternative Name in a Windows certificate

Sommige van de SAN-kenmerken die zijn geassocieerd met het certificaat van Google.

Begrip van Encoding

We gebruiken veel talen om met elkaar te communiceren, net zoals computers hun eigen taal hebben. Deze taal is binair en verschillende coderingsmethoden zijn hoe we binair bruikbaarder maken voor anderen, net zoals we Engels naar andere talen zouden vertalen.

Encoding dient een specifiek doel. Encoding maakt het mogelijk om de leesbare menselijke uitbreidingswaarden op te slaan op een manier die computers ook kunnen gebruiken. Encoding-formaten maken het gemakkelijker voor computers om X509-certificaten op te slaan en over te dragen, maar laten ons ook toe om hun inhoud te lezen.

Computers zijn goed in het werken met gehele getallen, encoding stelt je in staat om numerieke waarden om te zetten naar alfanumerieke waarden of zelfs binaire blobs. Deze conversie is essentieel voor het werken met computers, en certificaten vertrouwen op encoding om de juiste informatie op de juiste manier over te brengen naar computers. Encoding-formaten definiëren de normen voor het uitvoeren van die conversies.

  • ASN.1 – De Abstract Syntax Notation One-standaard is het serialisatieformaat voor elk van de velden binnen certificaten.
  • ASCII – De American Standard Code for Information Interchange (ASCII) bepaalt een binaire waarde voor elk van de computerbesturings- en afdrukbare tekens die worden gebruikt voor de meeste menselijk leesbare communicaties.
  • Base64 – Base64 definieert een schema om binaire inhoud binnen de ASCII-tekenset te coderen. Dit zijn de certificaten die je kunt openen in een teksteditor en waarin je “BEGIN CERTIFICATE” of andere referentietekst kunt zien.
  • DER – Distinguished Encoding Rules (DER) definieert een ander coderingsschema specifiek voor ASN.1-gegevens als opeenvolgende octetten. Het belangrijke om te overwegen bij DER is dat de gecodeerde uitvoer niet zichtbaar is als ASCII.

Je kunt hieronder het verschil zien in coderingsschema’s. Let op dat het bestand certificate.crt dat eerst wordt weergegeven, een ——-BEGIN CERTIFICATE——- heeft, gevolgd door een reeks willekeurige letters en cijfers, en eindigt met ——-END CERTIFICATE——-. Alle tekens zijn leesbaar voor mensen. Het eerste certificaat is Base64 gecodeerd.

Bekijk nu het tweede voorbeeld van het bestand certificate.cer. De inhoud van dit bestand ziet er veel anders uit dan het Base64-certificaat. Dit X509-certificaat is DER-gecodeerd.

DER-encoded certificate shown in PowerShell

Verschil tussen Base64- en DER-gecodeerde bestanden.

Begrip van X509-certificaattypen

Herinner je eraan dat een certificaat niets meer is dan een openbare sleutel met wat metadata die als een bestand wordt weergegeven. Je zult veel verschillende soorten bestanden tegenkomen die vele verschillende soorten certificaten vertegenwoordigen. Elk type bestand wordt onderscheiden door de bestandsextensie ervan. Wanneer we bijvoorbeeld verwijzen naar een KEY-bestand, verwijzen we naar de bestandsextensie.

Hieronder vind je alle gebruikelijke soorten certificaten gedefinieerd door hun bestandsextensie waarmee je kunt werken, evenals hun doel.

In de onderstaande lijst zul je verschillende verwijzingen naar PKCS opmerken. PKCS of Public Key Cryptography Standards is een reeks normen om te definiëren hoe verschillende certificaten worden gemaakt. Voor meer informatie kun je deze informatieve Wikipedia-artikel raadplegen.

  • PFX – Deze komen het meest voor in een Windows-omgeving, maar het is een standaardformaat ongeacht het besturingssysteem. PFX-bestanden bevatten een certificaat, de openbare sleutel en extensies, en een privésleutel die is versleuteld met een wachtwoord. PFX wordt gedefinieerd door de PKCS #12-standaard.
  • P12 – Net als PFX wordt P12 gedefinieerd door de PKCS #12-standaard. Formeel is PKCS #12 de opvolger van het PFX-formaat, hoewel beide bestandstypen hetzelfde formaat vertegenwoordigen in moderne cryptografische implementaties.
  • P7B – Een container van ASN.1-certificaten, specifiek openbare sleutels voor alle lagen van een certificaatautoriteitsketen zoals je hieronder zult leren. Een PKCS #7-bestand biedt een enkel bestand om meerdere openbare sleutels te verspreiden, vaak gebruikt om handmatig vertrouwen op te zetten met CA’s in een privé-PKI.
  • P7C – Het bestandstype P7C heeft functioneel dezelfde betekenis als P7B, maar is eenvoudigweg een andere gangbare extensie die wordt gebruikt om een PKCS #7-bestand voor te stellen.
  • DER – Een DER-bestand is een DER-gecodeerde openbare sleutel.
  • CER – Een openbare sleutel is meestal DER-gecodeerd of Base64-gecodeerd. Een CER-bestand is meestal DER-gecodeerd.
  • CRT – Een CRT is meestal Base64-gecodeerd, maar er zijn geen garanties.
  • KEY – Een KEY-bestand is vaak een Base64-gecodeerde privésleutel, al dan niet versleuteld.
  • PEM – Een verwijzing naar een Base64-gecodeerd certificaat, hoewel er in een enkel PEM-bestand meerdere sleutels kunnen zitten, wordt vaak aangenomen dat het PEM-bestand een privésleutel bevat. Meestal gebruikt voor een PEM Base64-gecodeerd privésleutelbestand, al dan niet versleuteld.
  • CSR – Gebruikt om een openbare sleutel naar een CA te sturen om te worden ondertekend en uitgegeven, met aanvullende velden zoals een serienummer, en wordt gedefinieerd door PKCS #10. In de meeste gevallen bevat een CSR de ASN.1-structuur voor het verzoek in Base64-codering.
  • REQ – Gebruikt binnen Windows om de beleidsinstellingen voor inschrijving op te geven die worden gebruikt bij het genereren van de CSR.
  • CRL – Een CRL is een specifiek bestand met vermelding van de certificaten die zijn ingetrokken door een CA, hun intrekkingsstatus en de reden van intrekking.

Public Key Infrastructure (PKI): Het X509 Certificaten Ecosysteem

Herinner je je eerder toen iemand de sleutel van een deurslot vasthield. Op dat moment had je slechts één deur. Maar wat gebeurt er als je plotseling de eigenaar bent van tientallen of honderden appartementen? Het beheren van al die sleutels gaat lelijk worden!

Bovendien zullen huurders niet voor altijd in dat appartement blijven. Er zullen mensen zijn die de sleutel houden of ongeoorloofde kopieën maken. Je zult de deursloten moeten vervangen om toegang te voorkomen. Je vertrouwt de voormalige huurders niet meer.

Als je honderden appartementen moet beheren waarbij huurders voortdurend in- en uitgaan, hoe manage je dat allemaal? Het antwoord is een Public Key Infrastructure (PKI).

PKI is een volledig ecosysteem van rollen, beleidsregels en procedures gebouwd rond het beheren van openbare sleutels. PKI vertegenwoordigt een allesomvattende set van veel verschillende aandachtsgebieden om X509-certificaten te distribueren, gebruiken, beheren en verwijderen. Het is essentieel alles wat nodig is om certificaten op grote schaal correct te behandelen en beheren.

In de komende secties zullen we veel van de meest voorkomende componenten van een PKI uiteenzetten en de rol van elke component uitleggen.

Certificate Authorities (CA’s): Uw Ouders

A PKI is primarily built around the concept of managing trust. But since it’s not economical to directly manage hundreds or thousands of trust relationships, you need a mediator.

Je hebt een derde partij nodig die al is goedgekeurd door de oorspronkelijke partij. Deze tussenpersonen van derden worden certificeringsinstanties (CA’s) genoemd die worden geïdentificeerd door een Authority Key Identifiers (AKI) extensie afgeleid van de openbare sleutel die wordt gebruikt om het betreffende certificaat te ondertekenen.

Denk aan jezelf als een kind als een X509-certificaat. Je hebt waarschijnlijk geleerd om vreemden niet te vertrouwen van je ouders. Maar wat als je ouders (degenen die je vertrouwt), je voorstellen aan een vreemde en zeggen dat het oké is om hen te vertrouwen? Waarschijnlijk ga je er dan mee akkoord en vertrouw je de vreemde. Immers, als je ouders hen vertrouwen, kun jij dat ook.

A CA plays the role of your parents. You trust your parents (a CA) and they introduce you to strangers. They do so by signing the stranger’s public key to let you know that you can trust them.

De primaire rol van een CA is om op te treden als een vertrouwde bemiddelaar.

Uitgifte van X509-certificaten: Het vestigen van vertrouwen

Als een bekende vertrouwde entiteit maakt een CA vertrouwen mogelijk tussen indirecte partijen. Om vertrouwen tussen partijen mogelijk te maken, “geeft” een CA certificaten uit. Wanneer we het hebben over het uitgeven van een CA, bedoelen we eigenlijk dat de CA de aangevraagde extensies valideert en door de CA gegenereerde extensies toevoegt om een certificaat te creëren.

Wanneer een CA een X509-certificaat uitgeeft, gebruikt het zijn eigen privésleutel om de openbare sleutel van het certificaat digitaal te ondertekenen. Tijdens het ondertekeningsproces markeert een CA het certificaat op een manier om iedereen te informeren dat het deze openbare sleutel vertrouwt. DocuSign biedt een goed overzicht van dit specifieke concept met een goede diagram.

Nog een voorbeeld van een door een CA gegenereerde extensie is het serienummer voor elk certificaat, en elk serienummer moet uniek zijn voor die specifieke CA volgens de ontwerpspecificaties van de RFC.

Een voorbeeld van onbedoeld vertrouwen in moderne nieuwsberichten is het kwaadwillig gebruik van PKI’s met malware. Waar makers geldige certificaten ontvingen die impliciet worden vertrouwd door de meeste systemen, waardoor het moeilijker wordt voor uw systemen om de malware-binaries als kwaadaardig te identificeren.

Intrekken van X509-certificaten: Vertrouwen verwijderen

De CA is ook verantwoordelijk voor het intrekken van X509-certificaten die niet langer moeten worden vertrouwd. Deze intrekkingen worden door de CA gepubliceerd naar een Certificate Revocation List (CRL). Intrekking is een manier voor CAs om actief een certificaat ongeldig te maken, in plaats van te wachten tot de geldigheidsduur verloopt.

Vertrouwen is een cruciaal onderdeel voor certificaten om te functioneren zoals ze zijn ontworpen. Distributiepunten helpen bij het waarborgen van vertrouwen door een referentiepunt te bieden waar het certificaat en intrekkingslijsten kunnen worden gedownload van de uitgever en kunnen worden vergeleken met het certificaat dat u gebruikt.

A CRL Distribution Point (CDP) supplies the protocols and locations to obtain CRLs. Updating CRLs is a passive revocation validation method, with pulling updates at scheduled intervals. Online Certificate Status Protocol (OCSP) actively requests the revocation status of a specific certificate by maintaining caches of the CRLs.

Hoewel validatie van intrekking via CRL’s of OCSP beschikbaar is, moet dit worden geïmplementeerd op basis van de behoeften van de client en afgedwongen worden, en dat is niet altijd het geval.

Tiering

A PKI can be made up of multiple CAs or a single CA, these are commonly referred to as tiers.

X509-certificaatketen

Zoals u hierboven hebt geleerd, is vertrouwen een belangrijk aandachtspunt bij het gebruik van certificaten. Betrokken partijen moeten een certificaat kunnen vertrouwen of valideren dat is uitgegeven door een vertrouwde CA.

A great example of how this scales is the The United States Federal PKI public documents. These provide a great reference into maintaining an inter-organization trust relationship using CAs.

X509-certificaatondertekening

U hoort vaak over een concept genaamd certificaat ondertekening, maar wat betekent dat precies? Zoals u al heeft geleerd, draait bij certificaten alles om vertrouwen. Om vertrouwen te vestigen, wordt een X509-certificaat ondertekend door een CA. Het ondertekenen van een certificaat kent een unieke, cryptografische hash toe aan een certificaat en vertelt alle partijen die het lezen dat ze het kunnen vertrouwen. Het is ondertekend door een vertrouwde CA.

In een PKI-hiërarchie worden certificaten ondertekend door CA’s, maar waar die certificaten worden gebruikt, hangt af van het soort CA dat ze ondertekent.

Wanneer er een enkele CA in een PKI is, is die CA de root. Omdat er geen andere CA bestaat, moet die CA zijn eigen zelfondertekende certificaat genereren. Die CA geeft dan certificaten uit die door zijn eigen certificaat zijn ondertekend.

Als een PKI meer dan één CA heeft, worden alle CA’s ondertekend door een root-CA of een tussenliggende CA die terugketent naar de root-CA.

Typisch, wanneer een apparaat dezelfde privésleutel gebruikt die overeenkomt met de openbare sleutel bij het genereren van een X509-certificaat, staat dit bekend als een zelfondertekend certificaat. U kunt echter ook een CA vragen om zijn eigen privésleutel te gebruiken om uw certificaat te ondertekenen.

Handtekening Algoritmen

Handtekening algoritmen richten zich op het valideren van de authenticiteit van een bericht van een externe peer. Een digitale handtekening is een berichtdigest van een hashfunctie versleuteld met de privésleutel van de verzender. De ontvanger ontcijfert de digitale handtekening met behulp van een kopie van de openbare sleutel van de verzender. De ontvanger kan dan het digest van het ontvangen bericht vergelijken met het digest dat is ontcijferd uit de digitale handtekening. Wanneer de digests overeenkomen, is de authenticiteit van het bericht geldig.

Asymmetrische encryptie is het vermogen om cipher-tekst te genereren zonder gebruik te maken van een eerder bekend geheim. De combinatie van een sleuteluitwisselingsalgoritme met een handtekeningsalgoritme vormt de basis van asymmetrische encryptie.

Hieronder staan de primaire algoritmes die worden gebruikt voor digitale handtekeningen.

  • Rivest–Shamir–Adleman (RSA)
  • Digital Signature Algorithm (DSA)
  • Elliptic Curve DSA (ECDSA)

Certificate Signing Requests (CSRs)

Uitgevende CA’s gebruiken Certificate Signing Requests (CSR) waarmee cliënten openbare sleutels kunnen indienen bij CA’s voor uitgifte. Een CA accepteert een CSR en zal op basis van de geconfigureerde uitgiftebeleidslijnen ondertekende X509-certificaten uitgeven. Dit betekent dat elke CA waarop u vertrouwt, ook vertrouwen impliceert voor de openbare sleutels die het ondertekent.

Hashing

Hashing is een complex onderwerp, en ik zal niet eens proberen om het recht te doen in deze post. Het Computerphile-team heeft een goed overzicht op hun YouTube-kanaal. Hashing richt zich op het nemen van een invoerobject en het maken van een unieke uitvoer-hash voor die unieke invoer. De uitvoer-hash staat bekend als een digest. Dit betekent dat het wijzigen van het invoerobject op de geringste manier, een andere unieke en niet-gerelateerde digest zal creëren.

Moderne implementaties zullen zich richten op Secure Hash Algorithm (SHA) 2-algoritmen. Als opmerking, SHA 256, SHA 384, en SHA 512 staan bekend als SHA 2.

Hieronder staat een lijst van veelvoorkomende hashing-algoritmen die u zult zien.

  • SHA 256
  • SHA 384
  • SHA 512
  • Berichtsamenvatting (MD) 5

Certificaatbeleid

De certificaatbeleid (CP) uitbreiding levert de verwijzing naar de organisatie die de CA onderhoudt, waarin hun daadwerkelijke beleid voor de gegeven PKI wordt gedocumenteerd en moet worden afgestemd als een Certificeringspraktijkverklaring (CPS) die het beleid van de organisatie voor het onderhouden van de gegeven PKI beschrijft.

Verspreidingspunten

Een ander type verspreidingspunt dat binnen certificaten wordt geïdentificeerd, zijn Authority Information Access (AIA). Deze AIA’s leveren de protocollen en locaties om kopieën van de informatie van de certificaatverstrekkers te verkrijgen, meestal betekent dit de openbare sleutel van de uitgevende CA.

Samenvatting

Hopelijk voel je je nu meer op je gemak om je hand op te steken wanneer je een vraag krijgt, zoals aan het begin van dit artikel. Eerlijk gezegd, hopelijk heeft dit artikel je geholpen om de complexiteiten van X509-certificaten te begrijpen, en in de implementatie van deze normen in Windows. Hiermee heb je ook begrip gekregen van enkele basiscomponenten die je in de toekomst zullen helpen bij het werken met certificaten.

Tenminste nu, als iemand vraagt om de openbare sleutel van je certificaat, kun je bevestigen dat ze DER- of Base64-gecodeerd willen, en zij zullen het niet weten, dus je stuurt ze beide nog steeds.

Verder lezen

Source:
https://adamtheautomator.com/x509-certificates/