Où Windows stocke les certificats et les clés privées

/fr/images/view-physical-certificate-stores-in-windows.png

Les composants logiciels enfichables MMC graphiques suivants sont généralement utilisés pour gérer les certificats sous Windows : certlm.msc (certificats de machine locale), certmgr.msc (certificats utilisateur) et l’utilitaire de ligne de commande certutil. Tous ces outils interagissent avec les magasins de certificats logiques, qui extraient les emplacements physiques des clés de certificat publiques et privées sur le disque et dans le registre des utilisateurs finaux et des applications.

Emplacements de stockage de certificats logiques et physiques dans Windows

Les clés publiques et privées des certificats sous Windows ne sont pas stockées au même endroit central. Les clés publiques des certificats sont stockées dans le registre (peuvent être extraites), mais leurs clés privées (le cas échéant) sont stockées sur le système de fichiers et sont cryptées.

Par défaut, le gestionnaire de certificats Windows ( certmgr.msc ) affiche uniquement une vue logique des magasins de certificats. Pour afficher les magasins de certificats physiques dans la console, sélectionnez Affichage-> Options dans le menu et activez les magasins de certificats physiques. La console affichera désormais les clés de certificat regroupées par leur emplacement de stockage physique (registre, ordinateur local, carte à puce, etc.).

/fr/images/view-physical-certificate-stores-in-windows.png.webp

Certificats dans le registre :

Magasin de certificats |

Clé de registre |

Description—|—|—Utilisateur |

HKCU\SOFTWARE\Microsoft\SystemCertificates |

Clés publiques des certificats utilisateurs

Utilisateur |

HKCU\SOFTWARE\Policies\Microsoft\SystemCertificates |

Clés publiques des certificats utilisateur déployés à l’aide des stratégies de groupe AD

Ordinateur |

HKLM\SOFTWARE\Microsoft\SystemCertificates |

Clés publiques du certificat de machine

Ordinateur |

HKLM\LOGICIEL\Microsoft\Cryptographie\Services |

Clés publiques des services communs

Ordinateur |

HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates |

Clés publiques des certificats de machine installés via GPO

Ordinateur |

HKLM\SOFTWARE\Microsoft\EnterpriseCertificates |

Les clés publiques de la machine ont été installées à partir d’une autorité de certification d’entreprise dans un domaine AD.

Clés privées de certificat sur un lecteur système :

Utilisateur |

%APPDATA%\Microsoft\SystemCertificates |

Ce répertoire stocke les clés publiques des utilisateurs et les pointeurs vers les clés de certificat privées.—|—|—Utilisateur |

%APPDATA%\Microsoft\Crypto |

Conteneurs de clé privée utilisateur

Ordinateur |

%ProgramData%\Microsoft\Crypto |

Conteneurs de clés privées de machine

Cryptage DPAPI. Cela garantit que seul le propriétaire du compte, qui connaît le mot de passe, peut déchiffrer les clés privées. Cela protège les clés privées si un attaquant

Windows utilise une clé de cryptage principale basée sur le mot de passe de connexion de l’utilisateur pour protéger les clés privées de certificat. Cela garantit que seul le propriétaire du compte, qui connaît le mot de passe, peut déchiffrer les clés privées. Cela protège les clés privées si un attaquant réinitialise le mot de passe de l’administrateur local sur une machine.

De la même manière que vous accédez aux objets sur le système de fichiers, vous pouvez accéder au magasin de certificats logiques à partir de PowerShell à l’aide du fournisseur de certificats intégré.

Par exemple, il s’agit d’une commande PowerShell utilisée pour accéder au magasin de certificats de l’ordinateur.

cd Cert:\LocalMachine\my

Répertoriez les certificats dans le magasin LocalMachine :

Obtenir l'élément *

/fr/images/powershell-list-localmachine-my-certificates.png.webp

Vous pouvez également utiliser la commande certutil pour répertorier les certificats de machine :

certutil-store MY

Extraction des certificats du registre Windows

Les certificats sont stockés sous la clé de registre HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\SystemCertificates\MY. Ils peuvent être identifiés par leur empreinte digitale dans le nom de la clé de registre. Les données de chaque certificat sont stockées dans une valeur binaire BLOB contenant le certificat complet au format codé DER.

/fr/images/certificates-thumbprints-in-the-registry.png.webp

Utilisez ce script PowerShell pour extraire les données du certificat BLOB du registre par leur empreinte numérique. Ensuite, convertissez les données au format X509Certificate2 et imprimez les informations du certificat :

` $regPath=“HKLM:\SOFTWARE\Microsoft\SystemCertificates\MY\Certificates\D9DA2EDD7CBC0EFBF476276672DEBFD56870AAF8”$blob=(Get-ItemProperty-Path $regPath).Blob

$cert=Nouvel objet System.Security.Cryptography.X509Certificates.X509Certificate2-ArgumentList (, $blob)

$cert | Format-Liste Sujet, Émetteur, NotBefore, NotAfter, Thumbprint `

/fr/images/powershell-extract-x509-certificate-info-from-th.png.webp

Pour exporter ce certificat de clé publique sous forme de fichier CER (pour le transfert vers un autre ordinateur), exécutez les commandes suivantes :

` $certBytes=$cert.Export(System.Security.Cryptography.X509Certificates.X509ContentType::Cert)

System.IO.File::WriteAllBytes(“c:\temp\exported_certificate.cer”, $certBytes) `

/fr/images/export-certificate-key-from-a-registry-to-cer-file.png.webp

Cette approche est utile pour analyser le magasin de certificats d’un système défaillant en extrayant les données de ses ruches de registre hors ligne. Cela permet d’extraire toutes les parties publiques des certificats installés sur un ordinateur.

Utilisez le script RecoverOfflineCertificate pour exporter des clés privées à partir d’un ordinateur hors ligne.

*️⃣ Lien source :

les certificats déployés à l’aide des stratégies de groupe AD, réinitialise le mot de passe de l’administrateur local, RecoverOfflineCertificate ,