Wo Windows Zertifikate und private Schlüssel speichert

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

Die folgenden grafischen MMC-Snap-Ins werden normalerweise zum Verwalten von Zertifikaten in Windows verwendet: „certlm.msc“ (Lokale Maschinenzertifikate), „certmgr.msc“ (Benutzerzertifikate) und das Befehlszeilendienstprogramm „certutil“. Alle diese Tools interagieren mit den logischen Zertifikatsspeichern, die die physischen Speicherorte öffentlicher und privater Zertifikatsschlüssel auf der Festplatte und in der Registrierung von Endbenutzern und Apps abstrahieren.

Logische und physische Speicherorte für Zertifikate in Windows

Öffentliche und private Schlüssel von Zertifikaten werden in Windows nicht am selben zentralen Ort gespeichert. Die öffentlichen Schlüssel der Zertifikate werden in der Registrierung gespeichert (können extrahiert werden), ihre privaten Schlüssel (falls vorhanden) werden jedoch im Dateisystem gespeichert und verschlüsselt.

Standardmäßig zeigt der Windows-Zertifikatmanager („certmgr.msc“) nur eine logische Ansicht der Zertifikatspeicher an. Um die Speicher für physische Zertifikate in der Konsole anzuzeigen, wählen Sie im Menü „Ansicht->Optionen“ und aktivieren Sie die Speicher für physische Zertifikate. Die Konsole zeigt nun Zertifikatsschlüssel gruppiert nach ihrem physischen Speicherort (Registrierung, lokaler Computer, Smartcard usw.) an.

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

Zertifikate im Register:

Zertifikatsspeicher |

Registrierungsschlüssel |

Beschreibung—|—|—Benutzer |

HKCU\SOFTWARE\Microsoft\SystemCertificates |

Öffentliche Schlüssel von Benutzerzertifikaten

Benutzer |

HKCU\SOFTWARE\Policies\Microsoft\SystemCertificates |

Öffentliche Schlüssel von Benutzerzertifikaten, die mithilfe von AD-Gruppenrichtlinien bereitgestellt werden

Computer |

HKLM\SOFTWARE\Microsoft\SystemCertificates |

Öffentliche Schlüssel des Maschinenzertifikats

Computer |

HKLM\SOFTWARE\Microsoft\Cryptography\Services |

Öffentliche Schlüssel allgemeiner Dienste

Computer |

HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates |

Öffentliche Schlüssel von Maschinenzertifikaten, die über GPO installiert wurden

Computer |

HKLM\SOFTWARE\Microsoft\EnterpriseCertificates |

Die öffentlichen Schlüssel der Maschine wurden von einer Unternehmenszertifizierungsstelle in einer AD-Domäne installiert.

Private Schlüssel des Zertifikats auf einem Systemlaufwerk:

Benutzer |

%APPDATA%\Microsoft\SystemCertificates |

In diesem Verzeichnis werden öffentliche Benutzerschlüssel und Zeiger auf private Zertifikatsschlüssel gespeichert.—|—|—Benutzer |

%APPDATA%\Microsoft\Crypto |

Private Schlüsselcontainer des Benutzers

Computer |

%ProgramData%\Microsoft\Crypto |

Private Schlüsselcontainer maschinell bearbeiten

DPAPI-Verschlüsselung. Dadurch wird sichergestellt, dass nur der Kontoinhaber, der das Passwort kennt, die privaten Schlüssel entschlüsseln kann. Dies schützt private Schlüssel vor einem Angreifer

Windows verwendet einen Hauptverschlüsselungsschlüssel, der auf dem Anmeldekennwort des Benutzers basiert, um private Schlüssel des Zertifikats zu schützen. Dadurch wird sichergestellt, dass nur der Kontoinhaber, der das Passwort kennt, die privaten Schlüssel entschlüsseln kann. Dies schützt private Schlüssel, wenn ein Angreifer das lokale Administratorkennwort auf einem Computer zurücksetzt.

Ähnlich wie Sie auf Objekte im Dateisystem zugreifen, können Sie über PowerShell mithilfe des integrierten Cert-Anbieters auf den logischen Zertifikatsspeicher zugreifen.

Dies ist beispielsweise ein PowerShell-Befehl, der zum Navigieren zum Zertifikatspeicher des Computers verwendet wird.

cd Cert:\LocalMachine\my

Zertifikate im LocalMachine-Store auflisten:

Get-Item *

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

Alternativ können Sie den Befehl certutil verwenden, um die Maschinenzertifikate aufzulisten:

certutil-store MY

Zertifikate aus der Windows-Registrierung extrahieren

Die Zertifikate werden unter dem Registrierungsschlüssel „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\MY“ gespeichert. Sie können anhand ihres Fingerabdrucks im Namen des Registrierungsschlüssels identifiziert werden. Die Daten für jedes Zertifikat werden in einem BLOB-Binärwert gespeichert, der das vollständige Zertifikat im DER-codierten Format enthält.

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

Verwenden Sie dieses PowerShell-Skript, um BLOB-Zertifikatsdaten anhand ihres Fingerabdrucks aus der Registrierung zu extrahieren. Konvertieren Sie dann die Daten in das X509Certificate2-Format und drucken Sie die Zertifikatsinformationen aus:

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

$cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2-ArgumentList (, $blob)

$cert | Formatliste Betreff, Aussteller, NotBefore, NotAfter, Fingerabdruck `

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

Um dieses Public-Key-Zertifikat als CER-Datei zu exportieren (zur Übertragung auf einen anderen Computer), führen Sie die folgenden Befehle aus:

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

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

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

Dieser Ansatz ist nützlich für die Analyse des Zertifikatspeichers eines ausgefallenen Systems, indem Daten aus seinen Offline-Registrierungsstrukturen extrahiert werden. Dadurch können Sie alle öffentlichen Teile der auf einem Computer installierten Zertifikate extrahieren.

Verwenden Sie das RecoverOfflineCertificate-Skript, um private Schlüssel von einem Offline-Computer zu exportieren.

*️⃣ Quelllink:

Zertifikate, die mithilfe von AD-Gruppenrichtlinien bereitgestellt werden, , setzt das lokale Administratorkennwort zurück, , RecoverOfflineCertificate ,