Wie heißen die Zertifikatspeicher auf Windows Systemen?

Wie heißen die Zertifikatspeicher auf Windows Systemen?

  • Comments 5
  • Likes

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 –enterprise

certutil –enumstore –user
certutil –enumstore –user –user
certutil –enumstore –user –grouppolicy

certutil –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: http://technet.microsoft.com/en-us/library/cc757138.aspx und http://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
  • 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

    Sandra

  • Hi Sandra,

    paßt zwar nicht 100% zum Blog, aber ;-) :

    Ich gehe davon aus, daß Du die AIA oder ähnliche AD Stores meinst?

    Du kannst im Normalfall Zertifikate mit "certutil -delstore" löschen - jedoch mußt Du dann den LDAP-Pfad als Zielobjekt angeben. Wie so ein Pfad aussieht, kannst Du Dir mittels "certutil -v -store -?" anschauen, dort sind Beispiele aufgeführt. Du paßt den Pfad dann entsprechend an Deine Umgebung und das gewünschte Zertifikat an.

    Alternativ kann natürlich auch ADSIEdit.msc, LDP.exe etc. zum Löschen genutzt werden.

    Viele Grüße

    Fabian

  • 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 Bruno

  • Hallo

    Hab den Fehler gefunden, es muss:

    certutil -addstore "AuthRoot" "Ceka_Makros.cer"

    heissen.

  • Hallo Bruno,

    im Blog oben steht der Befehl, mit dem Du Dir die "internen" Speichernamen anzeigen lassen kannst: "certutil.exe -enumstore". :-)

    Auszug:

    Root               "Trusted Root Certification Authorities"

    Der richtige Befehl lautet also:

    certutil -addstore "Root" "Name.cer"

    Ich hoffe das hilft Dir weiter, viele Grüße

    Fabian

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment