Eksempel på certifikatkæde

Aliaksandr Prysmakou
Aliaksandr Prysmakou

Follow

8. december, 2017 – 3 min read

Jeg ser en masse spørgsmål som “hvordan man får certifikatkæde” eller “hvad er korrekt certifikatkæde rækkefølge”. Lad os kaste lidt lys over det.

TL;DR Certifikatkæden starter med dit certifikat efterfulgt af et mellemliggende certifikat eller af et root CA-certifikat. Issuer af et certifikat i kæden skal være lig med Subject af det næste op til root CA-certifikatet, hvor Subject er lig med Issuer.

Først af alt – For at et SSL-certifikat skal være troværdigt, skal det være udstedt af en CA, der er i det betroede lager på den enhed, du bruger (driftssystemlager eller programlager som i Firefox).

Lad os tage et kig på et af certifikaterne:

et certifikat

For mit domæne (se pile) forsøger systemer at finde udstederen af mit certifikat i Store, og hvis det ikke findes (i mit eksempel er det ikke) vil det forsøge at finde udstederen af udstederen af mit certifikat og så videre og så videre og så videre.

Relationen mellem certifikater skaber en certifikatkæde, hvor certifikatet for en ressource skal være udstedt enten af root CA (en af dem, der er installeret på dit system) eller af en mellemliggende CA (udstedt af en af root CA’erne eller af en “øverste” mellemliggende CA).

Som oftest får vi certifikatfiler (f.eks. en masse .crt) uden en specifik “certifikatkæde”-fil.

For at (gen)oprette kæden skal du starte fra din certifikatfil, i mit tilfælde er det STAR_my_domain.crt

openssl x509 -text -noout -in STAR_my_domain.crt

Vi er interesseret i to felter fra output: Subject og Issuer.

Det første i kædefilen skal være dit domænecertifikat (der er undtagelser. f.eks. for AWS Certificate Manager skal du indsende dit certifikat og kæden uden dit certifikat separat)

Der er to typer af CA: root og intermediate. Alle mellemliggende CA’s certifikater har forskellige Issuer- og Subject-felter. Root CA’s certifikat har samme Issuer og Subject.

Det andet certifikat skal være certifikatet for udstederen af din certifikatudsteder og så videre op til root-certifikatet.

I mit tilfælde ser kæden således ud:

Først går mit certifikat (STAR_mydomain.crt)

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

Dernæst i kæden (TrustedSecureCertificateAuthority5.crt). Bemærk: Subject er lig med den foregående fil’s 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 er 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 sidste er AddTrustExternalCARoot.crt. Bemærk: Issuer = Subject, betyder, at det er root CA. Der er ikke behov for at tilføje root CA-certifikatet til kæden. Det bremser det ikke, men det øger mængden af håndtryk og mængden af overførte 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

For at oprette en fil med certifikatkæden kan du køre:

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

For sådanne tjenester som AWS Certificate manager:

cat TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt

Filen skal se sådan ud:

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

For at kontrollere om alt er Ok med din certifikatkæde kan du bruge en af online tjenester som f.eks. DigiCert tilbyder.

UPDATE: Oplysningerne er opdateret efter flere problemer med AddTrust External CA Root udløbsdato den 30. maj 2020. Det er ikke nødvendigt at tilføje rodcertifikat. Det anbefales ikke, medmindre du bruger selvsigneret et.