Příklad řetězce certifikátů

Aliaksandr Prysmakou
Aliaksandr Prysmakou

Sledovat

8. prosince, 2017 – 3 minuty čtení

Vidím spoustu dotazů typu „jak získat řetězec certifikátů“ nebo „jaké je správné pořadí řetězce certifikátů“. Pojďme si na to trochu posvítit.

TL;DR Řetězec certifikátů začíná vaším certifikátem, po kterém následuje zprostředkující certifikát nebo certifikát kořenové certifikační autority. Vydavatel libovolného certifikátu v řetězci by se měl rovnat subjektu dalšího až po certifikát kořenové certifikační autority, kde se subjekt rovná vydavateli.

Především – aby byl SSL certifikát důvěryhodný, měl by být vydán certifikační autoritou, která je v důvěryhodném úložišti zařízení, které používáte (úložiště operačního systému nebo úložiště aplikací jako u Firefoxu).

Podívejme se na jeden z certifikátů:

a certifikát

Pro mou doménu (viz šipky) se systémy pokusí najít vydavatele mého certifikátu ve Store a pokud ho nenajdou (v mém příkladu není), pokusí se najít vydavatele vydavatele mého certifikátu a tak dále a tak dále.

Vazba mezi certifikáty vytváří řetězec certifikátů, kde certifikát prostředku musí být vydán buď kořenovou certifikační autoritou (jednou z nainstalovaných v systému), nebo zprostředkující certifikační autoritou (vydanou jednou z kořenových certifikačních autorit nebo „vyšší“ zprostředkující certifikační autoritou).

Velmi často dostáváme soubory certifikátů (např. svazek .crt) bez konkrétního souboru „řetězce certifikátů“.

Pro (znovu)vytvoření řetězce je třeba začít od souboru certifikátu, v mém případě je to STAR_my_domain.crt

openssl x509 -text -noout -in STAR_my_domain.crt

Zajímají nás dvě pole z výstupu: Subjekt a Vydavatel.

První v souboru řetězce by měl být certifikát vaší domény (existují výjimky. např. pro AWS Certificate Manager byste měli předložit svůj certifikát a řetězec bez svého certifikátu zvlášť)

Existují dva typy certifikačních autorit: kořenová a zprostředkující. Každý certifikát zprostředkující certifikační autority má jiná pole Issuer a Subject. Certifikát kořenové CA má stejná pole Issuer a Subject.

Druhý by měl být certifikát vydavatele vašeho vydavatele certifikátu a tak dále až po kořenový.

V mém případě vypadá řetězec takto:

První jde můj certifikát (STAR_mydomain.crt)

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

Druhý v řetězci (TrustedSecureCertificateAuthority5.crt). Poznámka: Subject se rovná Issuer předchozího souboru :

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

Třetí je 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

Poslední je AddTrustExternalCARoot.crt. Poznámka: Issuer = Subject, což znamená, že se jedná o kořenovou certifikační autoritu. Certifikát kořenové certifikační autority není třeba do řetězce přidávat. Nebrzdí ho, ale zvyšuje množství handshaků a množství přenášených dat.

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

Pro vytvoření souboru s řetězcem certifikátů můžete spustit:

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

Pro takové služby, jako je AWS Certificate manager:

cat TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt

Soubor by měl vypadat:

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

Pro kontrolu, zda je s řetězcem certifikátů vše v pořádku, můžete použít některou z online služeb, jako např. poskytuje DigiCert.

DOPLNĚNO: Informace aktualizovány po četných problémech s vypršením platnosti kořenového certifikátu AddTrust External CA 30. května 2020. Není třeba přidávat kořenový certifikát. Nedoporučuje se, pokud nepoužíváte samopodepsaný.