Si l'archivage des clés privées a été activé, il peut être nécessaire, dans certaines circonstances, d'exporter ces clés depuis la base de données de l'autorité de certification et de les convertir dans un autre format (PKCS#12, PFX), par exemple pour un archivage à long terme.
Vous trouverez ci-dessous une description de la procédure à suivre pour exporter certaines ou toutes les clés archivées et obtenir les métadonnées nécessaires.
Principes de base
Connaissez-vous TameMyCerts? TameMyCerts est un add-on pour l'autorité de certification Microsoft (Active Directory Certificate Services). Il étend la fonction de l'autorité de certification et permet de Application de la réglementationIl s'agit d'un logiciel de gestion des certificats qui permet d'automatiser l'émission de certificats en toute sécurité. TameMyCerts est unique dans l'écosystème Microsoft, a déjà fait ses preuves dans d'innombrables entreprises du monde entier et est disponible sous une licence libre. Il peut téléchargé via GitHub et être utilisé gratuitement. Une maintenance professionnelle est également proposée.
Pour cette étape, l'utilisateur exécutant doit disposer des droits „Manage CA“ et „Issue and manage Certificates“ sur l'autorité de certification.
Une clé archivée peut être exportée de la base de données de l'autorité de certification à l'aide de la commande suivante.
certutil -getkey {Seriennummer}
Veuillez noter que la sortie de la ligne de commande diffère selon l'état. Si le certificat Key Recovery Agent (KRA) requis pour la clé exportée est présent dans le profil de l'utilisateur qui effectue l'exportation, les méta-informations ne sont pas éditées. C'est pourquoi il peut être utile d'exécuter la commande sans les certificats KRA afin d'obtenir des informations complètes.

Toutefois, la suite de l'article décrit un moyen de lire la même information dans la base de données des autorités de certification avant de l'exporter et de la sauvegarder dans une liste.

Détermination de toutes les clés pour l'exportation à partir de la base de données des autorités de certification
Remarque: Pour cette étape, l'utilisateur exécutant doit disposer des droits „Manage CA“ et „Issue and manage Certificates“ sur l'autorité de certification.
Les certificats enregistrés dans la base de données des autorités de certification ne possèdent pas tous une clé privée archivée. Une liste des certificats concernés peut être éditée à l'aide de la commande suivante. La sortie s'effectue au format CSV, qui se prête parfaitement à un traitement ultérieur.
certutil -view -restrict "KeyRecoveryHashes>0" -out SerialNumber csv

Pour un archivage à long terme, il peut être utile d'inclure d'autres attributs dans la liste. Par exemple, les attributs suivants peuvent être utilisés :
- Le site RequestId L'attribut décrit l'identifiant unique du certificat dans la base de données de l'autorité de certification.
- Le site Nom du requérant L'attribut décrit le demandeur du certificat.
- Le site Numéro de série L'attribut décrit le numéro de série unique du certificat.
- Le site NotBefore L'attribut décrit le début de la validité du certificat.
- Le site NotAfter L'attribut décrit la fin de la validité du certificat.
- Le site KeyRecoveryHashes Cet attribut décrit les certificats Key Recovery Agent avec lesquels la clé privée a été archivée. Si la clé est archivée avec plusieurs certificats KRA, ceux-ci sont séparés par un signe „+“. Pour la récupération, la clé privée de l'un des certificats KRA doit être disponible.
La commande adaptée se présenterait donc comme suit :
certutil -view -restrict "KeyRecoveryHashes>0" -out RequestId,RequesterName,SerialNumber,NotBefore,NotAfter,KeyRecoveryHashes csv

Pour enregistrer les résultats dans un fichier, on peut utiliser la commande suivante.
certutil -view -restrict "KeyRecoveryHashes}0" -out RequestId,RequesterName,SerialNumber,NotBefore,NotAfter,KeyRecoveryHashes csv } C:\LabFiles\SerialNumber.txt
Cet ensemble de données peut maintenant être utilisé, par exemple, dans être importés dans Excel pour une évaluation ultérieure, Les données peuvent être traitées par le biais de l'interface utilisateur de l'ordinateur, ou par Windows PowerShell.
Import-Csv -Path C:\LabFiles\SerialNumber.txt

Exportation des clés de la base de données des autorités de certification
La liste des numéros de série créée précédemment est maintenant lue par Windows PowerShell et utilisée pour exporter les différentes clés.
Import-Csv -Path SerialNumber.txt | ForEach-Object -Process { certutil -getkey $_."Serial Number" "$($_."Serial Number").bin" }
Les arguments de ligne de commande utilisés pour la commande certutil signifient ici ce qui suit :
- Le site -getkey L'argument indique que la clé doit être exportée de la base de données de l'autorité de certification vers un fichier.

Cette étape a simplement exporté les clés de la base de données, mais elles sont toujours cryptées. Cette forme de stockage conviendrait par exemple pour l'archivage à long terme, à condition que les certificats Key Recovery Agent (KRA) soient toujours accessibles.
décryptage des clés archivées - conversion en fichier PFX
La commande précédente a exporté les clés de la base de données sous forme cryptée. Normalement, cela devrait suffire pour un archivage sûr, par exemple si l'autorité de certification doit être mise hors service. Cependant, dans certaines circonstances, il peut être souhaitable de convertir les clés au format PKCS#12 (.pfx).
Pour cette étape, il est nécessaire que tous les certificats de l'agent de récupération de clés utilisés ainsi que les clés privées soient installés ou disponibles sur le système.
Dans l'exemple ci-dessous, le même mot de passe est utilisé pour toutes les clés exportées - la sécurité de toutes les clés est donc liée à la connaissance de ce seul mot de passe. Cette procédure n'est donc pas recommandée dans la pratique. Il faudrait utiliser des mots de passe forts, générés de manière aléatoire, et surtout des mots de passe uniques pour chaque clé, ce qui serait réalisable avec une logique de programme correspondante plus complexe.
Pour exporter les clés archivées, on peut utiliser la commande suivante.
Import-Csv -Path SerialNumber.txt | ForEach-Object -Process { certutil –p "P@$$w0rd" -recoverkey "$($_."Serial Number").bin" "$($_."Serial Number").pfx" }
Les arguments de ligne de commande utilisés pour la commande certutil signifient ici ce qui suit :
- Le site -p L'argument indique le mot de passe pour le fichier PFX à créer.
- Le site -recoverkey L'argument indique que la clé doit être décryptée par l'agent de récupération de clés.

Si le processus échoue, par exemple parce que le certificat d'agent de récupération de clés approprié n'est pas disponible, ce résultat est affiché en conséquence et sauvegardé dans la variable %ERRORLEVEL% pour un traitement ultérieur.
Decrypt error: Cannot find the certificate and private key to use for decryption. 0x8009200c (-2146885620 CRYPT_E_NO_DECRYPT_CERT)
CertUtil: -RecoverKey command FAILED: 0x8009200c (-2146885620 CRYPT_E_NO_DECRYPT_CERT)
CertUtil: Cannot find the certificate and private key to use for decryption.
