Récemment, quelqu'un s'est adressé à moi avec un problème intéressant.
Une autorité de certification a été installée. Linux, c'est-à-dire (probablement) OpenSSL, sert de base. Les listes de blocage fonctionnent sur les clients Linux, mais ne sont pas acceptées par les systèmes Windows. Ici, le message d'erreur suivant apparaît toujours lorsque l'on vérifie les listes de blocage.
0x80092013 (-2146885613 CRYPT_E_REVOCATION_OFFLINE) -- 2148081683 (-2146885613)
Text der Fehlermeldung: Die Sperrfunktion konnte die Sperrung nicht überprüfen, da der Sperrserver offline war.
En anglais, le message d'erreur est le suivant :
0x80092013 (-2146885613 CRYPT_E_REVOCATION_OFFLINE) -- 2148081683 (-2146885613)
The revocation function was unable to check revocation because the revocation server was offline.
Comme on peut le voir, le certificat de test est accepté sans problème via la boîte de dialogue Windows Shell.

Nous allons toutefois au fond des choses et vérifions les adresses contenues dans le certificat pour le certificat d'autorité de certification et les listes de révocation de certificats.
certutil -verify -urlfetch test.cer
Nous rencontrons ici le code d'erreur CRYPT_E_REVOCATION_OFFLINE.
ERROR: Verifying leaf certificate revocation status returned The revocation function was unable to check revocation because the revocation server was offline. 0x80092013 (-2146885613 CRYPT_E_REVOCATION_OFFLINE)
CertUtil: The revocation function was unable to check revocation because the revocation server was offline.

Pour avoir un aperçu plus approfondi de ce qui se passe en arrière-plan, nous activons le logging pour les CryptoAPI (CAPI).
Pour cela, nous allons dans l'observateur d'événements sous "Applications and Services Logs" - "Microsoft" - "Windows" - "CAPI2".

Le journal CAPI2 est désactivé par défaut, car il consigne un grand nombre d'entrées. Nous l'activons de manière transitoire.

Nun reproduzieren wir den Fehler mit certutil und deaktivieren das Log anschließend wieder.

Dans le journal CAPI2, nous trouvons maintenant des événements de la catégorie "Reject Revocation Information".

Si nous jetons un coup d'œil aux détails, nous constatons que la liste de blocage a certes pu être téléchargée, mais que sa vérification n'a apparemment pas abouti.

Le message d'erreur est le suivant
A certificate being used for a purpose other than the ones specified by its CA.
Celle-ci indique que la liste de révocation de certificats a été établie par une autorité de certification qui n'est pas autorisée à le faire.
Jetons donc un coup d'œil au certificat de l'autorité de certification.

Dans la Extension du certificat Key Usage nous constatons que le certificat d'autorité de certification ne peut être utilisé que via la Key Usage keyCertSign (0x4), mais pas cRLSign (0x2).
L'autorité de certification n'est donc pas du tout autorisée à émettre des listes de révocation de certificats. La CAPI le reconnaît et refuse de reconnaître la liste de révocation comme valable.
Conclusion
Le test de description du code d'erreur CRYPT_E_REVOCATION_OFFLINE indique certes qu'il ne peut pas être téléchargé, mais dans la pratique, ce code d'erreur peut signifier bien plus, par exemple
- La liste de révocation des certificats ne peut pas être téléchargée
- La liste de révocation des certificats n'est pas encore ou n'est plus valable
- La liste de révocation des certificats ne peut pas être vérifiée
De même, il s'avère que les Microsoft Active Directory Certificate Services nous protègent de nombreux écueils possibles dans le domaine des PKI grâce à des paramètres standard judicieux.