- C:
- ProgramData
- Microsoft
- Crypto
Crypto C:\ProgramData\Microsoft\Crypto
Dossier des clés cryptographiques de l'ordinateur (magasins CryptoAPI et CNG, dont RSA\MachineKeys) ; ne jamais le modifier ni copier son contenu.
À quoi ça sert
Les clés privées des certificats de l’ordinateur y sont stockées : certificat TLS d’IIS, Bureau à distance, authentification par certificat, entre autres. CryptoAPI et CNG (Cryptography API: Next Generation) lisent ce dossier ; s’il est perdu ou que ses permissions changent, ces services cessent de fonctionner.
Ce qu’il contient
Un sous-dossier par fournisseur ou type de clé. Le plus connu est RSA\MachineKeys, où chaque clé privée RSA de la machine est un fichier au nom hexadécimal. Les clés CNG de l’ordinateur sont rangées à côté, dans Keys. Ces fichiers sont des blobs protégés, illisibles tels quels.
Pour savoir quel fichier correspond à quel certificat, certutil -store My <empreinte> affiche le « Unique container name », qui est le nom du fichier de clé.
Risques et bonnes pratiques
- Ne copiez, ne déplacez et ne supprimez jamais ces fichiers : une clé privée perdue rend le certificat inutilisable, une clé copiée le compromet.
- Les permissions de
MachineKeyssont particulières et documentées par Microsoft. Si elles ont été modifiées (symptômes typiques : erreurs de Bureau à distance ou de TLS), rétablissez-les d’après cette documentation, pas par essais successifs. - Gérez les certificats avec
certlm.mscou le lecteurCert:. Exportez une clé privée seulement si c’est indispensable, avec un mot de passe fort, et supprimez l’export après usage. - Choisissez des clés non exportables, et un module TPM ou HSM quand c’est possible.
Commandes utiles
# Certificats de l'ordinateur et présence de la clé privéeGet-ChildItem Cert:\LocalMachine\My | Select-Object Subject, Thumbprint, NotAfter, HasPrivateKey
# Détail d'un certificat, avec le fournisseur de clé et le fichier de clé (Unique container name)certutil -store My <empreinte>
# Permissions du dossier MachineKeys (lecture seule)icacls "$env:ProgramData\Microsoft\Crypto\RSA\MachineKeys"