Exemplu de lanț de certificate

Aliaksandr Prysmakou
Aliaksandr Prysmakou

Follow

Dec 8, 2017 – 3 min citește

Văd o mulțime de întrebări de genul „cum se obține lanțul de certificate” sau „care este ordinea corectă a lanțului de certificate”. Haideți să facem puțină lumină.

TL;DR Lanțul de certificate începe cu certificatul dvs. urmat de un certificat intermediar sau de certificatul CA rădăcină. Emitentul oricărui certificat din lanț trebuie să fie egal cu subiectul certificatului următor până la certificatul CA rădăcină, unde subiectul este egal cu emitentul.

În primul rând – Pentru ca un certificat SSL să fie de încredere, acesta trebuie să fie emis de o CA care se află în magazinul de încredere al dispozitivului pe care îl utilizați (magazinul sistemului de operare sau magazinul de aplicații, ca în cazul Firefox).

Să aruncăm o privire asupra unuia dintre certificate:

un certificat

Pentru domeniul meu (vezi săgețile) sistemele încearcă să găsească emitentul certificatului meu în Store și dacă nu este găsit (în exemplul meu nu este) va încerca să găsească emitentul emitentului emitentului certificatului meu și așa mai departe și tot așa.

Relația dintre certificate creează un lanț de certificate în care certificatul unei resurse trebuie să fie emis fie de o CA rădăcină (una dintre cele instalate pe sistemul dumneavoastră), fie de o CA intermediară (emisă de una dintre CA rădăcină sau de o CA intermediară „superioară”).

De foarte multe ori primim fișiere de certificate (de exemplu, o grămadă de fișiere .crt) fără un fișier specific de „lanț de certificate”.

Pentru a (re)crea lanțul trebuie să porniți de la fișierul dvs. de certificat, în cazul meu este STAR_domeniul_meu.crt

openssl x509 -text -noout -in STAR_my_domain.crt

Ne interesează două câmpuri din ieșire: Subject și Issuer.

Primul din fișierul de lanț ar trebui să fie certificatul domeniului dvs. (există excepții. de ex. pentru AWS Certificate Manager ar trebui să trimiteți certificatul dvs. și lanțul fără certificatul dvs. separat)

Există două tipuri de AC: root și intermediate. Orice certificat al unei CA intermediare are diferite câmpuri Issuer și Subject. Certificatul Root CA are Issuer și Subject egale.

Secundul ar trebui să fie certificatul emitentului emitentului certificatului dvs. și așa mai departe până la cel root.

În cazul meu, lanțul arată astfel:

Primul este certificatul meu (STAR_mydomain.crt)

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

Secundul din lanț (TrustedSecureCertificateAuthority5.crt). Notă: Subject este egal cu Issuer din fișierul anterior :

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

Al treilea este 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

Ultimul este AddTrustExternalCARoot.crt. Notă: Issuer = Subject (Emitent = Subiect), înseamnă că este CA rădăcină. Nu este necesar să adăugați certificatul CA rădăcină în lanț. Nu îl frânează, dar crește cantitatea de handshake-uri și cantitatea de date transmise.

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

Pentru a crea un fișier cu lanțul de certificate puteți rula:

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

Pentru servicii precum AWS Certificate manager:

cat TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt

Filierul ar trebui să arate ca:

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

Pentru a verifica dacă totul este în regulă cu lanțul de certificate puteți folosi oricare dintre serviciile online, cum ar fi de exemplu DigiCert oferă.

UPDATE: Informații actualizate după mai multe probleme cu AddTrust External CA External CA Root expiră pe 30 mai 2020. Nu este nevoie să adăugați certificatul root. Nu este recomandat decât dacă folosiți unul autofirmat.

.