Un client peut faire confiance à un certificat plus profond, mais c'est entièrement automatique.
La plupart des serveurs TLS permettent de fournir un ensemble de certificats intermédiaires en plus du certificat utilisé pour ce point final.
La racine de Letsencrypt est donc reconnue par la plupart des navigateurs/clients.
Mais les certificats de Letsencrypt proviennent d'une autorité de certification plus profonde qui ne fait généralement pas l'objet d'une confiance directe. Le serveur doit inclure l'intermédiaire.
Ainsi, lorsque le client se connecte, il obtient les intermédiaires et le certificat de la ressource à laquelle il se connecte. Il tentera d'établir une chaîne de confiance depuis la racine jusqu'au certificat, en passant par les intermédiaires.
Examinons donc le cas de https://serverfault.com/ . Mon système ne fait confiance qu'à l'autorité de certification DigiCert, mais pas à l'autorité de certification DigiCert High Assurance EV Root CA. Mais je peux utiliser https://serverfault.com/ car le serveur renvoie les intermédiaires.
Si vous voulez lancer le CLI, vous pouvez voir les certificats avec openssl
echo '' | openssl s_client -showcerts -connect serverfault.com:443
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
verify return:1
depth=0 C = US, ST = NY, L = New York, O = "Stack Exchange, Inc.", CN = *.stackexchange.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=NY/L=New York/O=Stack Exchange, Inc./CN=*.stackexchange.com
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
-----BEGIN CERTIFICATE-----
MIIIP... # the intermediate
-----END CERTIFICATE-----
1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
-----BEGIN CERTIFICATE-----
MIIEs... # cert for stackexchange
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=NY/L=New York/O=Stack Exchange, Inc./CN=*.stackexchange.com
issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3945 bytes and written 269 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
...
Ainsi, un client ne fait pas automatiquement confiance aux autorités de certification les plus profondes, mais il est facile de configurer les choses de manière à ce que les certificats soient fiables.