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:
CA
A
révoque CAB
, le certificatC
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 certificatC
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.
"Ç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).
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.