• [^] # Re: Certificat racine cross-signé

    Posté par . En réponse au journal Android < 7.1 va refuser les connections TLS certifiées par Let's Encrypt. Évalué à 5. Dernière modification le 25 décembre 2020 à 23:39.

    A-t-il sa propre signature (self-signed) et un champ d'extension avec la signature d'une autre autorité ?

    Non. En fait, ce qu’on appelle un certificat cross-signé est en réalité deux certificats distincts, chacun signé avec deux clefs différentes.

    Dans le cas du certificat ISRG Root X1, il y a une version signée par la clef privée correspondant à la clef publique du certificat (c’est-à-dire, auto-signée), et une version signée par la clef privée du certificat racine d’IdenTrust.

    La raison pour laquelle ça marche est qu’un certificat contient, entre autres informations, l’empreinte de la clef qui l’a signé (c’est le champ X509v3 Authority Key Identifier). C’est cette empreinte que le navigateur utilise pour trouver le certificat « parent » et ainsi remonter la chaîne des certificats intermédiaires jusqu’à un certificat racine de confiance. Or cette empreinte ne dépend que de la clef elle-même et pas du certificat qui la contient.

    Par exemple, le certificat intermédiaire de Let’s Encrypt (Let’s Encrypt R3) contient l’identifiant de la clef ISRG Root X1. À partir de cet identifiant, le navigateur peut remonter à n’importe lequel des deux certificats ISRG Root X1 (celui auto-signé et celui signé par IdenTrust), parce que les deux ont la même clef publique (ils ne diffèrent que par leur signature, qui n’a aucune incidence sur l’empreinte de la clef publique).