Exempel på certifikatkedja

Aliaksandr Prysmakou
Aliaksandr Prysmakou

Följ

8 december, 2017 – 3 min read

Jag ser många frågor som ”hur får man fram en certifikatkedja” eller ”vad är rätt ordning för certifikatkedjan”. Låt oss belysa detta.

TL;DR Certifikatkedjan börjar med ditt certifikat följt av ett mellanliggande certifikat eller ett rotcertifikat. Utfärdaren av ett certifikat i kedjan ska vara lika med ämnet för nästa certifikat upp till rotcertifikatet där ämnet är lika med utfärdaren.

För det första – För att ett SSL-certifikat ska vara tillförlitligt ska det utfärdas av en certifikatutfärdare som finns i det betrodda lagret för den enhet du använder (operativsystemets lager eller programlagret som i Firefox).

Låt oss ta en titt på ett av certifikaten:

ett certifikat

För min domän (se pilarna) försöker systemet hitta utfärdaren av mitt certifikat i Store och om det inte hittas (i mitt exempel inte) kommer det att försöka hitta utfärdaren av utfärdaren av mitt certifikat och så vidare och så vidare.

Relationen mellan certifikat skapar en certifikatkedja där certifikatet för en resurs måste utfärdas antingen av en rotcertifikatutfärdare (en av dem som är installerad i ditt system) eller av en mellanliggande certifikatutfärdare (utfärdad av en av rotcertifikatutfärdarna eller en ”övre” mellanliggande certifikatutfärdare).

Väldigt ofta får vi certifikatfiler (t.ex. en massa .crt) utan en specifik ”certificate chain”-fil.

För att (åter)skapa kedjan bör du börja från din certifikatfil, i mitt fall är det STAR_my_domain.crt

openssl x509 -text -noout -in STAR_my_domain.crt

Vi är intresserade av två fält från utdata: Vi är intresserade av två fält i resultatet: Subject och Issuer.

Det första i kedjefilen bör vara ditt domäncertifikat (det finns undantag, t.ex. för AWS Certificate Manager bör du skicka in ditt certifikat och kedjan utan ditt certifikat separat)

Det finns två typer av certifikatutfärdare: rot- och mellanliggande certifikatutfärdare. Varje mellanliggande CA:s certifikat har olika fält för Issuer och Subject. Root CA:s certifikat har samma Issuer och Subject.

Det andra certifikatet bör vara certifikatet från utfärdaren av din certifikatutfärdare och så vidare upp till rotcertifikatet.

I mitt fall ser kedjan ut så här:

Först kommer mitt certifikat (STAR_mydomain.crt)

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

Nästa i kedjan (TrustedSecureCertificateAuthority5.crt). Observera: Subject är lika med föregående filens Issuer :

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

Den tredje är 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

Den sista är AddTrustExternalCARoot.crt. Observera: Issuer = Subject betyder att det är rotcertifikatutfärdaren. Det finns inget behov av att lägga till root CA-certifikat i kedjan. Det bromsar den inte men ökar antalet handskakningar och mängden överförd data.

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

För att skapa en fil med certifikatkedjan kan du köra:

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

För sådana tjänster som AWS Certificate manager:

cat TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt

Filen ska se ut så här:

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

För att kontrollera att allting är ok med din certifikatkedja kan du använda någon av onlinetjänsterna som t.ex. DigiCert tillhandahåller.

UPPDATERING: Information uppdaterad efter flera problem med AddTrust External CA Root som löper ut den 30 maj 2020. Inget behov av att lägga till rotcertifikat. Det rekommenderas inte om du inte använder ett självsignerat certifikat.