Wie heißen die Zertifikatspeicher auf Windows Systemen?
Hallo zusammen, Fabian hier. Ab und an wird uns die Frage gestellt, wie man Zertifikatspeicher (certificate stores) bzw. deren Namen identifizieren und ggf. Zertifikate in diese Zertifikatspeicher importieren kann.
Grundsätzlich ist die komfortabelste Variante sicherlich Group Policies zu nutzen. So ist es beispielsweise möglich, Zertifikate in den Zertifikatspeicher „Vertrauenswürdige Stammzertifizierungsstellen“ („Trusted Root Certificate Authorities“) zu importieren, um so etwa Root-Zertifikate als vertrauenswürdig zu behandeln.
Wie man jedoch im rot markierten Bereich des Bildschirmfotos oben (neudeutsch „Screenshot“) sehen kann, sind nicht alle Zertifikatspeicher aufgeführt, die wir beispielsweise in der „certmgr.msc“ bzw. einer eigenen MMC (siehe unten) sehen können. Bei den Benutzereinstellungen der GPO sind die Möglichkeiten noch begrenzter, auch wenn einige Zertifikate über die Internet Explorer Maintenance verteilt werden können.
Möchte man nun also Zertifikate etwa mittels „certutil.exe“ in einen bestimmten Zertifikatspeicher schreiben oder andere Aktionen durchführen, benötigt man zuallererst einmal den Namen desselbigen. Hierzu ist der wahrscheinlich schnellste Weg bei einem Windows XP oder auch Windows Server 2003 System, die Registry zu bemühen. Dort liegt ein Teil der Zertifikate für den entsprechenden Benutzer oder Computer in den jeweiligen Stores, deren Namen sich über die Registry also recht schnell herausfinden lassen:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates
Wie in den Abbildungen zu sehen ist, lassen sich so problemlos die Zertifikatspeicher für den ausgewählten Benutzer (im Beispiel den gerade angemeldeten Benutzer) oder für den Computer anzeigen.
Mit Hilfe der Windows Vista / Windows Server 2008 „certutil.exe“ Version läßt sich das noch einfacher erledigen – gespickt mit einigen interessanten Zusatzinformationen: Es gibt ab dieser „certutil.exe“ Version den Schalter „-enumstore“. Möchte man sich also die vorhandenen Zertifikatspeicher für Benutzer, Computer oder auch Dienste anzeigen lassen, kann man folgende Kommandos verwenden (selbst ausprobieren macht schlau ;-) …):
certutil –enumstore
certutil –enumstore –grouppolicy
certutil –enumstore –enterprisecertutil –enumstore –user
certutil –enumstore –user –user
certutil –enumstore –user –grouppolicycertutil –enumstore –service
certutil –enumstore –service –service
Wie man hierbei gut sehen kann, kann so etwa auch ein konkreter Speicherort abgefragt werden (z.B. „-grouppolicy“). Hintergrund dafür ist, daß die Stores zwar logisch als ein Speicherort dargestellt werden, im System jedoch an verschiedenen Stellen existieren können (oder einige Computer Zertifikatspeicher auch für den Benutzer transparent "eingeblendet" werden). Das bedeutet, daß an unterschiedlichen Stellen Zertifikate liegen können: Beispielsweise in der Registry, im Dateisystem oder aber in der Active Directory. Dazu kommt, daß zum Beispiel Zertifikate im Speicher "Vertrauenswürdige Stammzertifizierungsstellen" nicht nur für den Computer bzw. für SYSTEM zugreifbar sind, sondern diese auch für den Benutzer zur Verfügung stehen - wenn der Client selbst dem Zertifikat der Stammzertifizierungsstelle vertraut, mach dies auch für den Benutzer Sinn. Daher werden in der logischen Ansicht auf die Zertifikatspeicher eines Benutzers auch die Zertifikate des Computer-Speichers der "Vertrauenswürdigen Stammzertifizierungsstellen" mit eingeblendet. Weitere Informationen dazu finden sich hier: https://technet.microsoft.com/en-us/library/cc757138.aspx und https://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/distrib/dscj_mcs_ssft.mspx?mfr=true .
Einen schnellen Blick auf den „physischen“ Speicherort kann man werfen, indem man unter „certmgr.msc“ bzw. einer eigenen MMC auf den Knoten „Zertifikate - Aktueller Benutzer“ bzw. „Zertifikate - Lokaler Computer“ klickt, um dann über „Ansicht“ --> „Optionen“ --> die Option „Physikalischer Zertifikatspeicher“ zu aktivieren. Es wird dann in der MMC in eine Darstellung gewechselt, die die Knoten noch einmal nach Speicherort aufteilt. Hierdurch erklärt sich dann auch, warum etwa manche Zertifikate in der normalen Ansicht doppelt angezeigt werden – sie liegen schlichtweg mehrfach an unterschiedlichen Speicherorten.
Möchte man mit Kenntnis der Speicherorte nun bestimmte Zertifikate in einen konkreten Zertifikatspeicher importieren / auslesen / löschen, kann man etwa „certutil.exe“ nutzen. Beispiele für die Bearbeitung eines Zertifikats im Zertifikatspeicher „Vertrauenswürdige Herausgeber“ („Trusted Publisher“) eines Benutzers könnten dann etwa so aussehen:
certutil -store "TrustedPublisher" "<THUMBPRINT oder Seriennummer des Zertifikats>"
--> Anzeigen des gewählten Zertifikats im Trusted Publisher Store.
certutil -addstore "TrustedPublisher" "C:\PFAD\Zertifikat.cer"
--> Hinzufügen des Zertifikats in den Trusted Publisher Store.
certutil -delstore "TrustedPublisher" "<THUMBPRINT oder Seriennummer des Zertifikats>"
--> Löschen des konkreten Zertifikats aus dem Trusted Publisher Store, es werden dabei keine anderen Zertifikate gelöscht als das angegebene Zertifikat mit dem entsprechenden Thumbprint bzw. der entsprechenden Seriennummer.
Bindet man diese Kommandozeilen nun etwa in ein Startscript ein, kann man die Bearbeitung eines Zertifikatspeichers recht komfortabel erledigen. Zu beachten ist dabei lediglich, daß certutil dann entweder auf dem Client selbst vorhanden sein muß oder aber über das Netzwerk aufgerufen werden muß.
Hinweis: Der Schalter „-v“ ist bei den meisten Optionen in „certutil.exe“ eine interessante Option – fast alle Schalter zeigen, ergänzt durch ein „-v“, ausführlichere Daten an, so auch der Befehl:
certutil –v –enumstore
oder etwa
certutil –v -?
Das aber nur am Rande.
Viele Grüße
Fabian
Comments
Anonymous
January 01, 2003
The comment has been removedAnonymous
January 01, 2003
The comment has been removedAnonymous
February 03, 2010
Hallo Fabian Ich veröffentliche Zertifikate mit dem Befehl certutil -dspublish -f "Pfad zum Zertifikat" Nun möchte ich aber abgelaufene Zertifikate löschen. Gibt es hier einen Befehl, mit dem ich die Zertifikate auch über die Domäne löschen kann? Die meisten Zertifikate liegen unter Current User/Personal und ein paar noch unter Current User/Trusted Root Certification Authorities. Ich habe es mit dem -delstore versucht, aber leider ohne Erfolg. Besten Dank für deine Antwort Gruss SandraAnonymous
September 10, 2012
Hallo Ich versuche gerade ein Zertifikat in den Ordner "Trusted Root Certificate Authorities" zu installieren: certutil -addstore "Trusted Root Certificate Authorities" "Name.cer" Das funktioniert aber nicht. Wenn ich es in den "TrustedPublisher" installiere funktionierts: certutil -addstore "TrustedPublisher" "Name.cer" Was mache ich falsch? Benötigt der andere Ordner noch andere Parameter oder so? Hoffe den Tread liest noch jemand :) Gruss BrunoAnonymous
September 10, 2012
Hallo Hab den Fehler gefunden, es muss: certutil -addstore "AuthRoot" "Ceka_Makros.cer" heissen.Anonymous
June 30, 2015
Hallo,
der Beitrag ist zwar schon etwas älter, aber ich habe jetzt das Problem, dass ich ein Zertifikat in "Intermedia Certification Atuhorities" importieren muss.
Mit dem Befehl certutil –v –enumstore komme ich leider nicht weiter, da nicht alle Verzeichnisse aufgelistet werden.
Kann mir da jemand bitte helfen?
Vielen Dank.
Gruß DieterAnonymous
July 01, 2015
The comment has been removed