Certificate Chain Example

Aliaksandr Prysmakou
Aliaksandr Prysmakou

Follow

Dec 8, 2017 – 3 min read

Ik zie veel vragen zoals “hoe krijg ik certificaatketen” of “wat is de juiste volgorde van de certificaatketen”.

TL;DR De certificaatketen begint met uw certificaat, gevolgd door een intermediate certificaat of een root CA-certificaat. Issuer of any certificate in chain should be equal to Subject of next one up to root CA certificate where Subject equals to Issuer.

First of all – In order for an SSL certificate to be trusted it should be issued by a CA that is in trusted store of the device you use (operation system store or application store like with Firefox).

Laten we eens kijken naar een van de certificaten:

een certificaat

Voor mijn domein (zie pijlen) probeert het systeem de uitgever van mijn certificaat in Store te vinden en als deze niet wordt gevonden (in mijn voorbeeld is dat niet het geval), probeert het de uitgever van de uitgever van mijn certificaat te vinden, enzovoort.

Relatie tussen certificaten creëert een Certificaatketen waarbij het certificaat van een bron ofwel door een root-CA (een van de geïnstalleerde op uw systeem) of door een intermediaire CA (uitgegeven door een van de root-CA of door een “upper” intermediaire CA) moet worden afgegeven.

Vaak krijgen we certificaatbestanden (bv. een heleboel .crt) zonder een specifiek “certificaatketen”-bestand.

Om de keten (opnieuw) te maken, moet u beginnen met uw certificaatbestand, in mijn geval is dat STAR_my_domain.crt

openssl x509 -text -noout -in STAR_my_domain.crt

We zijn geïnteresseerd in twee velden van de uitvoer: Subject en Issuer.

Eerste in keten bestand moet uw domein certificaat zijn (er zijn uitzonderingen. bijvoorbeeld voor AWS Certificate Manager moet u uw certificaat en de keten zonder uw certificaat afzonderlijk indienen)

Er zijn twee soorten CA: root en intermediate. Elk intermediair CA-certificaat heeft verschillende Issuer- en Subject-velden. Het certificaat van de root-CA heeft dezelfde Issuer en Subject.

De tweede moet het certificaat van de emittent van uw certificaat zijn en zo verder tot de root.

In mijn geval ziet de keten er als volgt uit:

Eerst in de keten komt mijn certificaat (STAR_mydomain.crt)

Issuer: C=US, ST=DE, L=Wilmington, O=Corporation Service Company, CN=Trusted Secure Certificate Authority 5
Subject: my subject

Tweede in de keten (TrustedSecureCertificateAuthority5.crt). Opmerking: Subject is gelijk aan de Issuer van het vorige bestand :

Issuer: C=US, ST=New Jersey, L=Jersey City, O=The USERTRUST Network, CN=USERTrust RSA Certification Authority
Subject: C=US, ST=DE, L=Wilmington, O=Corporation Service Company, CN=Trusted Secure Certificate Authority 5

Derde is USERTrustRSAAddTrustCA.crt:

Issuer: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
Subject: C=US, ST=New Jersey, L=Jersey City, O=The USERTRUST Network, CN=USERTrust RSA Certification Authority

Laatste is AddTrustExternalCARoot.crt. Opmerking: Issuer = Subject, betekent dat het de root CA is. Het is niet nodig om een root CA certificaat aan de keten toe te voegen. Het remt niet, maar het verhoogt de hoeveelheid handshakes en de hoeveelheid verzonden gegevens.

Issuer: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
Subject: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root

Om een bestand met de certificaatketen te maken, kunt u uitvoeren:

$cat STAR_mydomain.crt TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt

Voor diensten als AWS Certificate manager:

cat TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt

Het bestand moet er zo uitzien:

-----BEGIN CERTIFICATE-----
content of your domain certificate
-----END CERTIFICATE-----
...
-----BEGIN CERTIFICATE-----
content of any intermediate CA certificate
-----END CERTIFICATE-----

Om te controleren of alles in orde is met uw certificaatketen, kunt u een van de online diensten gebruiken, zoals DigiCert biedt.

UPDATE: Informatie bijgewerkt na meerdere problemen met AddTrust External CA Root expiratie op 30 mei 2020. U hoeft geen root-certificaat toe te voegen. Het is niet aanbevolen, tenzij u gebruik maakt van een zelf ondertekend.