web-dev-qa-db-fra.com

Si vous révoquez le certificat d'une autorité de certification, tous les certificats qu'elle a émis deviennent-ils également invalides?

Si vous révoquez le certificat d'une autorité de certification, tous les certificats qu'elle a émis deviennent-ils également invalides? Qu'en est-il des certificats délivrés par une autorité en dessous?

Par exemple, si la racine CA A émet la CA intermédiaire B, qui émet le certificat C et:

  • L'AC A révoque l'AC B, le certificat C devient-il invalide?
  • CA A est révoqué (d'une manière ou d'une autre), sa révocation se répercute-t-elle tout le long de la chaîne de sorte que le certificat C est maintenant également invalide?
26
Jonathan Wilbur

CA A révoque CA B, le certificat C devient-il invalide?

Oui, la révocation descend en cascade jusqu'à l'arbre. Si le certificat CA est révoqué, tous les certificats ci-dessous (quel que soit le nombre de niveaux inférieurs à CA) sont implicitement considérés comme non fiables. Gardez à l'esprit qu'ils deviennent * non fiables *, non révoqués.

CA A est révoqué (d'une manière ou d'une autre), sa révocation se répercute-t-elle tout le long de la chaîne de telle sorte que le certificat C est maintenant également invalide?

La révocation de l'autorité de certification racine est une opération non définie dans la RFC5280. Dans ce cas, l'AC met son certificat (numéro de série) dans sa propre CRL et signe avec sa propre clé. Et maintenant nous avons un problème d'oeufs de poule:

Le certificat CA est révoqué (répertorié dans la CRL), mais la CRL est signée avec une clé révoquée, , nous ne pouvons donc pas faire confiance à cette CRL et obtenir une réponse définitive sur la révocation du certificat racine. Ce problème est souvent résolu en ne vérifiant pas la révocation de l'autorité de certification racine à l'aide des techniques RFC5280. Par exemple, dans la configuration par défaut du moteur de chaînage de certificats de Microsoft, la révocation des certificats d'autorité de certification racine n'est pas du tout vérifiée.

De tels cas (révocation de l'autorité de certification racine) sont traités différemment, à l'aide de processus OOB, en conservant une liste d'ancres explicitement approuvées (certificats racine) et en supprimant un certificat CA erroné de la liste.

34
Crypt32

"Ça dépend".

La réponse la plus sûre est "oui, elle révoque le sous-arbre", car une fois que le certificat "B" a été révoqué, il n'y a aucune raison de faire confiance à un certificat qu'il prétend avoir émis (ou à une liste de révocation de certificats qu'il a signée, et cetera).

Mais cela dépend vraiment des entrées qui sont données au générateur de chaîne (ce qui signifie qu'il ne sera pas cohérent d'une application à l'autre).

  • Si une approbation de chaîne est établie sans vérifier la révocation, cela dira que tout va bien.
  • Si une approbation de chaîne est créée uniquement en vérifiant la révocation de l'entité finale, alors
    • Si l'autorité de certification a publié une liste de révocation de certificats finale révoquant tout, elle indiquera révoqué.
    • Sinon, cela dira que tout va bien.
  • Si la chaîne d'approbation est conçue pour vérifier la révocation partout sauf à la racine, elle dira révoquée.
  • Si la confiance de la chaîne est construite pour vérifier la révocation de la chaîne entière (ce qui est en quelque sorte redondant, car la façon la plus simple de "révoquer" la racine est de la retirer de la liste de confiance), elle dira révoquée.

Par défaut, la classe X509Chain De .NET vérifie la révocation pour tout sauf la racine. Win32 CertGetCertificateChain par défaut, aucune révocation (le type de révocation doit être spécifié via le paramètre dwFlags). D'autres bibliothèques peuvent avoir des valeurs par défaut différentes et les applications peuvent les configurer de différentes manières.

9
bartonjs