Esempio di catena di certificati

Aliaksandr Prysmakou
Aliaksandr Prysmakou

Follow

8 dicembre, 2017 – 3 min read

Vedo un sacco di domande come “come ottenere la catena dei certificati” o “qual è il corretto ordine della catena dei certificati”. Facciamo un po’ di luce al riguardo.

TL;DR La catena dei certificati inizia con il vostro certificato seguito da uno intermedio o dal certificato della CA radice. L’emittente di qualsiasi certificato nella catena dovrebbe essere uguale al soggetto del successivo fino al certificato della CA radice dove il soggetto è uguale all’emittente.

Prima di tutto – Affinché un certificato SSL sia affidabile dovrebbe essere emesso da una CA che si trova nel negozio di fiducia del dispositivo che usate (negozio del sistema operativo o negozio dell’applicazione come con Firefox).

Diamo un’occhiata a uno dei certificati:

un certificato

Per il mio dominio (vedi frecce) il sistema cerca di trovare l’emittente del mio certificato nello Store e se non lo trova (nel mio esempio non lo trova) cercherà l’emittente dell’emittente del mio certificato e così via.

La relazione tra i certificati crea una catena di certificati in cui il certificato di una risorsa deve essere emesso o dalla CA radice (una delle CA installate sul tuo sistema) o da una CA intermedia (emessa da una delle CA radice o da una CA intermedia “superiore”).

Molto spesso si ottengono file di certificati (per esempio un mucchio di .crt) senza un file specifico di “catena di certificati”.

Per (ri)creare la catena dovresti partire dal tuo file di certificato, nel mio caso è STAR_my_domain.crt

openssl x509 -text -noout -in STAR_my_domain.crt

Siamo interessati a due campi dell’output: Subject e Issuer.

Primo nel file della catena dovrebbe essere il certificato del tuo dominio (ci sono eccezioni. es. per AWS Certificate Manager dovresti presentare il tuo certificato e la catena senza il tuo certificato separatamente)

Ci sono due tipi di CA: root e intermedia. Ogni certificato della CA intermedia ha diversi campi Issuer e Subject. Il certificato della CA radice ha gli stessi campi Issuer e Subject.

Il secondo dovrebbe essere il certificato dell’emittente del tuo certificato e così via fino a quello radice.

Nel mio caso la catena si presenta così:

Prima va il mio certificato (STAR_mydomain.crt)

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

Secondo nella catena (TrustedSecureCertificateAuthority5.crt). Nota: Soggetto è uguale a Issuer del file precedente :

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

Il terzo è 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

L’ultimo è AddTrustExternalCARoot.crt. Nota: Issuer = Subject, significa che è la CA radice. Non c’è bisogno di aggiungere il certificato della CA radice alla catena. Non lo frena ma aumenta la quantità di handshake e la quantità di dati trasmessi.

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

Per creare un file con la catena di certificati puoi eseguire:

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

Per servizi come AWS Certificate manager:

cat TrustedSecureCertificateAuthority5.crt USERTrustRSAAddTrustCA.crt > Certificate_Chain.crt

Il file dovrebbe assomigliare a:

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

Per controllare se tutto è ok con la tua catena di certificati puoi usare uno dei servizi online come ad esempio DigiCert fornisce.

Aggiornamento: Informazioni aggiornate dopo molteplici problemi con AddTrust External CA Root in scadenza il 30 maggio 2020. Non è necessario aggiungere il certificato di root. Non è raccomandato a meno che non usiate quello autofirmato.

.