Windows-Zertifikatverwaltung mit PowerShell

Wenn Sie ein Windows-Systemadministrator sind, mussten Sie möglicherweise mit Windows-Zertifikaten arbeiten. Die Arbeit mit Zertifikaten unter Windows ist in der Regel eine zusätzliche Aufgabe, die ein Sysadmin übernehmen muss. Mit dem Windows-Zertifikatsmanager als Werkzeug können Sie dies tun!

Zertifikate sind berüchtigt komplex und schwer zu verstehen, aber in diesem Artikel haben Sie die Chance zu entdecken, dass Zertifikate unter Windows nicht so beängstigend sind!

Dieser Artikel wird sich hauptsächlich mit der Arbeit mit Zertifikaten unter Windows beschäftigen. Wenn Sie mehr darüber erfahren möchten, wie Zertifikate im Allgemeinen funktionieren, lesen Sie den Begleitartikel zu diesem Artikel, das X.509-Zertifikat-Tutorial.

Verständnis von Zertifikatsspeichern

Innerhalb des Windows-Zertifikatsmanagers existieren alle Zertifikate in logischen Speicherorten, die als Zertifikatsspeicher bezeichnet werden. Zertifikatsspeicher sind „Eimer“, in denen Windows alle derzeit installierten Zertifikate aufbewahrt und ein Zertifikat kann in mehr als einem Speicher sein.

Leider sind Zertifikatsspeicher nicht das intuitivste Konzept, mit dem man arbeiten kann. Sie werden unten lesen, wie Sie diese Speicher unterscheiden und wie Sie mit ihnen arbeiten können.

Jeder Speicher befindet sich in der Windows-Registry und im Dateisystem. Beachten Sie die untenstehende Tabelle für Details. Wenn Sie mit einem Zertifikat in einem Speicher arbeiten, arbeiten Sie mit dem logischen Speicher; Sie ändern die Registry oder das Dateisystem nicht direkt. Diese einfachere Methode ermöglicht es Ihnen, mit einem einzigen Objekt zu arbeiten, während Windows sich darum kümmert, wie dieses Objekt auf der Festplatte dargestellt wird.

Sie sehen manchmal, dass Zertifikatsspeicher als physische oder logische Speicher bezeichnet werden. Physische Speicher beziehen sich auf den tatsächlichen Dateisystem- oder Registrierungsspeicherort, an dem der/die Registrierungsschlüssel und/oder die Datei(en) gespeichert sind. Logische Speicher sind dynamische Verweise, die auf einen oder mehrere physische Speicher verweisen. Logische Speicher sind für die meisten gängigen Anwendungsfälle viel einfacher zu handhaben als physische Speicher.

Windows speichert Zertifikate in zwei verschiedenen Bereichen – im Benutzer- und Computerkontext. Ein Zertifikat wird in einem dieser beiden Kontexte platziert, abhängig davon, ob das Zertifikat von einem einzelnen Benutzer, mehreren Benutzern oder dem Computer selbst verwendet werden soll. In diesem Artikel werden Zertifikate im Benutzer- und Computerkontext informell als Benutzerzertifikate und Computerzertifikate bezeichnet.

Benutzerzertifikate

Wenn Sie möchten, dass ein Zertifikat von einem einzelnen Benutzer verwendet wird, ist ein Benutzerzertifikatsspeicher im Windows-Zertifikatsmanager ideal. Dies ist der häufige Anwendungsfall für zertifikatbasierte Authentifizierungsprozesse wie kabelgebundene IEEE 802.1x.

Benutzerzertifikate befinden sich im Profil des aktuellen Benutzers und sind nur logisch in diesem Benutzerkontext zugeordnet. Benutzerzertifikate sind „zugeordnet“ und für jeden Benutzer eindeutig, selbst auf demselben System.

Computerzertifikate

Wenn ein Zertifikat von allen Benutzern auf einem Computer oder einem Systemprozess verwendet wird, sollte es in einem Speicher im Computerkontext platziert werden. Wenn zum Beispiel ein Zertifikat auf einem Webserver verwendet wird, um die Kommunikation für alle Clients zu verschlüsseln, wäre es ideal, ein Zertifikat in einem Speicher im Computerkontext zu platzieren.

Sie werden feststellen, dass der Zertifikatsspeicher eines Computers logisch für alle Benutzerkontexte zugeordnet ist. Dies ermöglicht es Zertifikaten im Zertifikatsspeicher des Computers, von allen Benutzern verwendet zu werden, abhängig von den für den privaten Schlüssel konfigurierten Berechtigungen.

Weitere Informationen zu privaten Schlüsseln finden Sie im Artikel X.509-Zertifikate Tutorial: Ein Sysadmin-Leitfaden.

Computerzertifikate befinden sich in den Registrierungshives des lokalen Computers und im Programmdata-Ordner. Benutzerzertifikate befinden sich in den Registrierungshives des aktuellen Benutzers und im AppData-Ordner. Im Folgenden finden Sie eine Aufschlüsselung, wo sich jeder Typ des Speichers in der Registrierung und im Dateisystem befindet.

Context Registry Path Explanation
User HKCU:\SOFTWARE\Microsoft\SystemCertificates\ Physical store for user-specific public keys
User HKCU:\SOFTWARE\Policies\Microsoft\SystemCertificates\ Physical store for user-specific public keys installed by Active Directory (AD) Group Policy Objects (GPOs)
Computer HKLM:\SOFTWARE\Microsoft\SystemCertificates\ Physical store for machine-wide public keys
Computer HKLM:\SOFTWARE\Microsoft\Cryptography\Services\ Physical store for keys associated with a specific service
Computer HKLM:\SOFTWARE\Policies\Microsoft\SystemCertificates\ Physical store for machine-wide public keys installed by GPOs
Computer HKLM:\SOFTWARE\Microsoft\EnterpriseCertificates\ Physical store for machine-wide public keys installed by the Enterprise PKI Containers within an AD domain
Context File Location Explanation
User $env:APPDATA\Microsoft\SystemCertificates\ Physical store for user-specific public keys and pointers to private keys
User $env:APPDATA\Microsoft\Crypto\ Physical store for user-specific private key containers
Computer $env:ProgramData\Microsoft\Crypto\ Physical store for machine-wide private key containers

Voraussetzungen

In diesem Artikel finden Sie mehrere Beispiele für Interaktionen mit Windows-Zertifikatsspeichern. Um diese Beispiele zu replizieren, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:

  • Windows Vista, Windows Server 2008 oder ein neueres Betriebssystem. Die gezeigten Beispiele verwenden Windows 10 Enterprise Version 1903.
  • Vertrautheit mit PowerShell. Obwohl nicht erforderlich, wird dies die verwendete Sprache sein, um Zertifikate entsprechend zu referenzieren. Die gezeigten Beispiele wurden alle mit Windows PowerShell 5.1 erstellt.
  • Sie benötigen keine spezifischen Zertifikate, um den Anweisungen zu folgen, aber die Verwendung eines selbstsignierten Zertifikats ist vorteilhaft.

Verwaltung von Zertifikaten in Windows

In Windows gibt es drei Hauptmethoden zur Verwaltung von Zertifikaten:

  • Das Zertifikate-Microsoft-Management-Konsolen-Snap-In (certmgr.msc)
  • PowerShell
  • Das Befehlszeilenprogramm certutil

In diesem Artikel erfahren Sie, wie Sie Zertifikate über das Zertifikate-MMC-Snap-In und PowerShell verwalten können. Wenn Sie mehr darüber erfahren möchten, wie Sie certutil verwenden, schauen Sie sich die Microsoft-Dokumentation an.

PowerShell vs. Windows Security Certificate Manager

Da Zertifikate in Windows auf verschiedene Arten verwaltet werden können, welche Methode wählen Sie? Sollten Sie den GUI-Weg (MMC) gehen oder die Befehlszeilenoption mit PowerShell wählen?

Hinweis: Dieser Artikel ist sowohl für das Zertifikatsverwaltungs-Snap-In von Windows 7 als auch für Windows 10 relevant.

Zuerst sollten Sie den Lebenszyklus eines Zertifikats betrachten. Wenn Sie nur beabsichtigen, ein einzelnes Zertifikat einmal zu installieren oder zu entfernen, sollten Sie das MMC verwenden. Wenn Sie jedoch mehrere Zertifikate verwalten oder dieselbe Aufgabe immer wieder ausführen müssen, ist der Befehlszeilenweg möglicherweise die bessere Wahl. Selbst wenn Sie nicht wissen, wie man PowerShell-Skripte schreibt, lohnt es sich zu lernen, wenn Sie viele verschiedene Zertifikate verwalten müssen.

Lassen Sie uns zunächst einen Blick darauf werfen, wie Sie Zertifikate, die auf Windows installiert sind, mithilfe des Zertifikat-Managers und von PowerShell entdecken können.

Verwendung des Windows Zertifikat-Managers (certmgr.msc)

Um Zertifikate mit der MMC anzuzeigen, öffnen Sie den Zertifikat-Manager, indem Sie Ihr Startmenü öffnen und certmgr.msc eingeben. Dadurch wird die Windows-Zertifikate-MMC geöffnet. Diese erste Ansicht zeigt einen Überblick über alle logischen Speicher in der linken Fensterseite.

Im folgenden Screenshot sehen Sie, dass der logische Speicher Vertrauenswürdige Stammzertifizierungsstellen ausgewählt ist.

Trusted Root Certification Authorities store

Anzeigen von physischen Speichern

Standardmäßig zeigt der Windows-Zertifikat-Manager die tatsächlichen physischen Speicher nicht an. Um die Speicher anzuzeigen, klicken Sie auf Ansicht und dann auf Optionen. Dort finden Sie Optionen, um physische Zertifikatspeicher anzuzeigen. Durch Aktivieren dieser Option wird die Identifizierung der spezifischen Pfade in Windows erleichtert.

Figure 2 – The Certificates MMC View Options with Physical certificate stores selected.

Jetzt sehen Sie zusätzliche Container, die unter dem Beispiel des zuvor gezeigten logischen Speichers Vertrauenswürdige Stammzertifizierungsstellen angezeigt werden. Die Zertifikate sind immer noch entsprechend ihren logischen Speichern gruppiert, aber Sie können jetzt den physischen Speicher „Registry“ sehen.

Inspecting the physical cert stores

Untersuchen von Attributen im Windows-Zertifikat-Manager

Es gibt viele Attribute eines Zertifikats, die Sie sehen können, wenn Sie sie mit der MMC anzeigen. Zum Beispiel möchten Sie wahrscheinlich bestimmte Zertifikate auswählen.

Der einfachste Weg, dies zu erreichen, besteht darin, auf den Seriennummer– oder Thumbprint-Erweiterungswert des Zertifikats zu verweisen. Wenn das Zertifikat von einer Zertifizierungsstelle (CA) signiert wurde, hat es eine Seriennummer bei der Ausstellung. Der Thumbprint wird jedes Mal berechnet, wenn das Zertifikat angezeigt wird.

Sie können einige der Attribute für ein Zertifikat sehen, indem Sie es in der MMC öffnen, wie unten dargestellt.

Inspecting a Windows certificate

Ein wichtiger Punkt ist das Einbetten privater Schlüssel. Zertifikate in Windows können auch einen entsprechenden privaten Schlüssel haben. Diese privaten Schlüssel werden als verschlüsselte Dateien in entsprechenden physischen Speichern gespeichert.

Um ein Zertifikat mit und ohne entsprechenden privaten Schlüssel schnell zu unterscheiden, betrachten Sie das Zertifikatssymbol. Im Windows-Zertifikats-Manager sieht das Symbol für ein Zertifikat ohne privaten Schlüssel einfach wie ein Stück Papier mit einem Band aus. Wenn ein Zertifikat einen privaten Schlüssel hat, sehen Sie ein Schlüsselsymbol im MMC-Symbol und Sie sehen einen Schlüssel am unteren Rand des Allgemein-Registerkarten, wenn Sie das Zertifikat öffnen.

Certificate without an embedded private key

Verwendung von PowerShell

Wie bei der MMC können Sie Zertifikate auch mit PowerShell anzeigen und verwalten. Lassen Sie uns zunächst Zertifikate in ihren physischen Speichern (der Registrierung und dem Dateisystem) überprüfen.

Nach physischem Speicher

Mit dem PowerShell-Cmdlet Get-ChildItem können Sie alle Schlüssel und Werte innerhalb des übergeordneten HKCU:\Software\Microsoft\SystemCertificates\CA\Certificates\-Registrierungspfads auflisten.

Der untenstehende Befehl listet alle Zertifikate des derzeit angemeldeten Benutzers im Zwischenzertifizierungsstellen Logikspeicher auf.

Get-ChildItem -Path HKCU:\Software\Microsoft\SystemCertificates\CA\Certificates\

Jeder Eintrag in dem Registry Hive, den Sie sehen, entspricht dem Fingerabdruck des Zertifikats für eine vertrauenswürdige CA und seinem Zertifikat in der entsprechenden Eigenschaft. Ein Beispiel dafür können Sie unten sehen.

Results of the installed certificates from the example commands, limited to the first 5 entries.

Ein weiterer üblicher Speicher ist der persönliche Speicher. Ihre Zertifikate für diesen Speicher befinden sich im Dateisystem und nicht in der Registry. In den folgenden Befehlen zeigen wir diese unterschiedlichen physischen Pfade und deren Zwecke.

Jede Datei im Verzeichnis, die durch den untenstehenden Befehl zurückgegeben wird, entspricht einem Zertifikat, das im persönlichen aktuellen Benutzerspeicher installiert ist.

Get-ChildItem -Path $env:APPDATA\Microsoft\SystemCertificates\My\Certificates\

Jede im folgenden Befehl zurückgegebene Datei verweist auf das Objekt für einen privaten Schlüssel, der vom Key Storage Provider (KSP) erstellt wurde. Der Dateiname entspricht dem Subject Key Identifier des Zertifikats. Jeder private Schlüssel, den Sie installieren, wird eine entsprechende Datei hinzugefügt haben.

Get-ChildItem -Path $env:APPDATA\Microsoft\SystemCertificates\My\Keys\

Jede Datei im durch den folgenden Befehl zurückgegebenen Verzeichnis ist der eindeutige Behälter für den verschlüsselten privaten Schlüssel, der vom KSP erstellt wurde. Es besteht keine direkte Beziehung zwischen dem Dateinamen und dem Zertifikat, aber die Datei ist das Ziel des Zeigers im vorherigen Befehl.

Get-ChildItem -Path $env:APPDATA\Microsoft\Crypto\Keys

Nach logischem Speicher

Da die Arbeit mit Zertifikaten in ihren physischen Pfaden unüblich ist, arbeiten Sie für die restlichen Beispiele mit den logischen Speichern.

PowerShell kann über das Cert: PSDrive auf Windows logische Speicher zugreifen. Der Cert: PSDrive ordnet Zertifikate den physischen Speichern ähnlich wie die MMC zu.

Leider verwenden die MMC und der Cert PSDrive nicht die gleichen Bezeichnungen für die logischen Speicher. Im folgenden Vergleich sehen Sie eine Tabelle mit den gängigen Speichern und ihren Bezeichnungen sowohl in der MMC als auch im Cert PSDrive.

Cert: Certificates MMC
My Personal
Remote Desktop Remote Desktop
Root Trusted Root Certification Authorities
CA Intermediate Certification Authorities
AuthRoot Third-Party Root Certification Authorities
TrustedPublisher Trusted Publishers
Trust Enterprise Trust
UserDS Active Directory User Object
Auswahl von Zertifikaten

Wenn Sie mit Zertifikaten arbeiten, benötigen Sie eine Möglichkeit, Zertifikate zu filtern und auszuwählen, um spezifische Operationen durchzuführen. In den meisten Fällen filtern und wählen Sie Zertifikate basierend auf dem Wert einer bestimmten Erweiterung aus.

Für die folgenden Beispiele müssen Sie zunächst alle installierten Zertifikate im Stamm-CA-Speicher auflisten.

Get-ChildItem -Path Cert:\CurrentUser\Root\

Die zurückgegebenen Objekte sind Zertifikatsobjekte, die Sie in den folgenden Beispielen verwenden können.

Gängige Erweiterungen sind bereits als Eigenschaften der Zertifikatsobjekte verfügbar. Im folgenden Beispiel verwenden Sie Get-Member, um alle Eigenschaften der zurückgegebenen Objekte aufzulisten.

Get-ChildItem -Path Cert:\CurrentUser\Root\ | Get-Member -MemberType Properties
Figure 9 – The properties available for the returned certificate objects.

Wie in Abbildung 9 zu sehen ist, sind einige dieser Erweiterungen, wie zum Beispiel der Aussteller, hilfreich, um das gesuchte Zertifikat zu finden. Erweiterungen liefern Informationen über das Zertifikat, wie z.B. an wen es ausgestellt wurde, wofür es verwendet werden kann und etwaige Beschränkungen.

In komplexeren Anwendungsfällen möchten Sie Zertifikate nach anderen Erweiterungen suchen, wie z.B. dem verwendeten Zertifikatstemplate. Das Problem besteht darin, dass die Werte für diese Erweiterungen als Array von Ganzzahlen zurückgegeben werden. Diese Ganzzahlen entsprechen dem ASN.1-codierten Inhalt.

Die vorhandenen ScriptProperties, die auf dem Objekt verfügbar sind, zeigen Beispiele für die Interaktion mit diesen. Im folgenden Befehl werden Sie manuell die Schlüsselverwendungen abrufen, um diese Beziehung zu sehen.

((Get-ChildItem -Path Cert:\CurrentUser\Root\ | select -First 1).Extensions | Where-Object {$_.Oid.FriendlyName -eq "Key Usage"}).format($true)

Das neue Element, das wir in dem obigen Befehl einführen, ist die format-Methode, die die ASN.1-Dekodierung durchführt. Sie übergeben ihr einen booleschen Wert (z.B. $true) oben, um festzulegen, ob das zurückgegebene Objekt einzeilig oder mehrzeilig sein soll.

Sie werden den Thumbprint-Wert des Zertifikats in Abbildung 7 im folgenden Befehl verwenden. Der Thumbprint-Wert wird als PowerShell-Variable festgelegt und in den folgenden Befehlen verwendet, um das spezifische Zertifikat auszuwählen.

$thumb = "cdd4eeae6000ac7f40c3802c171e30148030c072"
Get-ChildItem -Path Cert:\CurrentUser\Root\ | Where-Object {$_.Thumbprint -eq $thumb}

Erstellen von selbstsignierten Zertifikaten mit PowerShell

PowerShell kann selbstsignierte Zertifikate mit dem New-SelfSignedCertificate-Cmdlet erstellen. Selbstsignierte Zertifikate sind nützlich für Tests, da sie es ermöglichen, ein öffentliches und privates Schlüsselpaar ohne Verwendung einer Zertifizierungsstelle zu generieren.

Erstellen wir nun ein selbstsigniertes Zertifikat in den Speichern für den aktuellen Benutzer und die lokale Maschine, um es in den nächsten Schritten als Beispiel zu verwenden.

In dem folgenden Beispiel generiert PowerShell ein öffentliches und privates Schlüsselpaar, ein selbstsigniertes Zertifikat und installiert sie alle in den entsprechenden Zertifikatsspeichern.

PS51> New-SelfSignedCertificate -Subject 'User-Test' -CertStoreLocation 'Cert:\CurrentUser\My'
PS51> New-SelfSignedCertificate -Subject 'Computer-Test' -CertStoreLocation 'Cert:\LocalMachine\My'

Die Verwendung von selbst signierten Zertifikaten für Produktionsdienste wird nicht empfohlen, da alle vertrauensbasierten Mechanismen nicht existieren.

Zertifikate importieren/exportieren

Die asymmetrische Verschlüsselung basiert grundlegend darauf, dass der öffentliche Schlüssel weit verbreitet zugänglich ist. Daher benötigen Sie standardisierte Möglichkeiten, um Zertifikate effektiv zu teilen. Ebenso wichtig ist die Sicherheit Ihrer privaten Schlüssel. Das Speichern von privaten Schlüsseln auf nicht zugänglichen Medien oder zusammen mit Materialien zur Katastrophenwiederherstellung ist eine gängige Praxis für bestimmte private Schlüssel.

Beide erfordern Möglichkeiten, um diese kryptografischen Objekte in standardisierten Formaten zu speichern. Der Export bietet Funktionen zum Speichern dieser Objekte und stellt sicher, dass sie weit verbreitete Standarddateiformate verwenden. Der Import ermöglicht Ihnen das Einbringen der kryptografischen Objekte in Windows-Betriebssysteme.

Verwendung des Windows-Zertifikatmanagers (certmgr.msc)

Das Exportieren von Zertifikaten aus der MMC ist relativ einfach. Um ein Zertifikat ohne einen privaten Schlüssel zu exportieren, klicken Sie auf das Zertifikat in der MMC, klicken Sie auf das Menü Alle Aufgaben und dann auf Exportieren.

Während des Exports werden Sie nach einem Dateiformat gefragt, wie unten gezeigt. Die häufigsten Optionen sind DER oder Base-64-codiert.

Figure 10 – Exporting a certificate with no private key or one that is marked as not exportable.

Exportieren von privaten Schlüsseln

Um ein Zertifikat mit einem zugehörigen privaten Schlüssel zu exportieren, müssen zwei Kriterien erfüllt sein: Das angemeldete Konto muss die Berechtigung zum Zugriff auf den privaten Schlüssel haben (nur für Computerzertifikate), und der private Schlüssel muss als exportierbar markiert sein.

Um die Berechtigungen für die privaten Schlüssel eines lokalen Computers zu überprüfen, können Sie ein Zertifikat mit einem privaten Schlüssel auswählen, Alle Aufgaben wählen und Private Schlüssel verwalten im Zertifikate-MMC auswählen. Das geöffnete Dialogfeld zeigt die Zugriffssteuereinträge für die privaten Schlüssel an.

The Basic Security Property Page for the private keys of a certificate with the Subject of ServerName.

Wenn diese zwei oder drei Voraussetzungen erfüllt sind, können Sie ein Zertifikat auswählen, auf Alle Aufgaben klicken und dann auf Exportieren, genau wie bei einem Zertifikat mit nur einem öffentlichen Schlüssel. Beim Exportieren sollten Sie nun die Option auswählen können, Ja, den privaten Schlüssel exportieren, wie unten gezeigt.

Certificate Export Wizard with exportable private key.

Beim Exportieren eines privaten Schlüssels in Windows können Sie die Datei nur als PFX speichern. Diese Dateitypen und Codierungsformate werden in diesem Beitrag ausführlich erläutert.

Für die restlichen Einstellungen im Export-Assistenten können Sie die Standardeinstellungen verwenden. Die folgende Tabelle gibt einen schnellen Überblick über jede Option.

Setting Description
Including all certificates in the certification path if possible Helps with portability of certificate issuers, and includes all pertinent public keys in the PFX
Delete the private key if the export is successful Removes the private key from the file and has few common use cases, but one example is to test access to private keys
Export all extended properties Will include any extensions within the current certificate, these relate to the certificates [specific settings]() for Windows interfaces
Enable certificate privacy Normally only the private key will be encrypted in the exported PFX file, this setting encrypts the entire contents of the PFX file
Group or user names You can use a group or user security principal from Active Directory for encrypting the contents of the PFX file, but a password is the most portable option across legacy systems or computers not joined to the same domain

Zertifikate importieren

Die Importfunktion ist für alle unterstützten Zertifikatdateitypen gleich. Der einzige Unterschied besteht darin, dass Sie, wenn die Datei einen privaten Schlüssel enthält, diesen als exportierbar markieren können, worauf unten näher eingegangen wird. Windows verwendet den Zertifikatimport-Assistenten.

Figure 12 – Certificate Import Wizard with a PFX file.

Wenn Sie den Zertifikatimport-Assistenten für eine PFX-Datei verwenden, müssen Sie das Passwort angeben, das zum Verschlüsseln des privaten Schlüssels verwendet wurde. Hier ist eine erneute Zusammenfassung der Importoptionen.

Setting Description
Enable strong private key protection Requires a password for each access of a private key, be cautious of newer functions as they will not be supported in all software
Mark this key as exportable You should try to avoid using this setting on any end system, private keys should be treated similarly to storing passwords
Protect private key using [virtualization-based security] The setting provides more security functionality for protecting private keys from advanced malware attacks
Include all extended properties Relates to the same Windows-specific settings discussed as with exporting

PowerShell-Code-Signing-Zertifikate sind ein guter Anwendungsfall für eine starke private Schlüsselsicherung.

Die automatische Platzierung von Zertifikaten kann problematisch sein. Sie erzielen wahrscheinlich die besten Ergebnisse, wenn Sie den Zertifikatsspeicher manuell auswählen.

Mit PowerShell

Exportieren Sie jetzt mit PowerShell eines der zuvor erstellten selbstsignierten Zertifikate. In diesem Beispiel wird der aktuelle Benutzer verwendet, aber Sie können auch einen anderen wählen.

Im Folgenden wählen Sie ein Zertifikat im logischen Speicher „Persönlich“ des aktuellen Benutzers aus, das selbstsigniert ist, d.h. der Aussteller entspricht dem Inhaber.

$certificate = Get-Item (Get-ChildItem -Path Cert:\CurrentUser\My\ | Where-Object {$_.Subject -eq $_.Issuer}).PSPath

Nachdem Sie ein Zertifikat ausgewählt haben, können Sie den Befehl Export-Certificate verwenden, um eine im DER-Format codierte Datei mit dem folgenden Befehl zu speichern.

Export-Certificate -FilePath $env:USERPROFILE\Desktop\certificate.cer -Cert $certificate

Nun schauen wir uns an, wie man auch den privaten Schlüssel exportiert. Im Folgenden wird überprüft, ob das ausgewählte Zertifikat einen privaten Schlüssel hat. Wenn dies nicht wahr ist, hat der Get-Item-Befehl wahrscheinlich das falsche Zertifikat ausgewählt.

$certificate.HasPrivateKey

Im Folgenden legen Sie ein Kennwort fest, um den privaten Schlüssel zu verschlüsseln. Dann exportieren Sie das ausgewählte Zertifikat in eine PFX-Datei und verwenden das zuvor eingegebene Kennwort zur Verschlüsselung der Datei.

$pfxPassword = "ComplexPassword!" | ConvertTo-SecureString -AsPlainText -Force
Export-PfxCertificate -FilePath $env:USERPROFILE\Desktop\certificate.pfx -Password $pfxPassword -Cert $certificate

Ähnlich wie beim Exportieren gibt es zwei Befehle zum Importieren von Zertifikaten und zum Importieren von PFX-Dateien.

Unten finden Sie den Befehl Import-Certificate, der die zuvor exportierte DER-kodierte Datei in den persönlichen Speicher des aktuellen Benutzers importiert.

Import-Certificate -FilePath $env:USERPROFILE\Desktop\certificate.cer -CertStoreLocation Cert:\CurrentUser\My

Angenommen, Sie möchten den privaten Schlüssel dieses Zertifikats ebenfalls installieren.

$pfxPassword = "ComplexPassword!" | ConvertTo-SecureString -AsPlainText -Force
Import-PfxCertificate -Exportable -Password $pfxPassword -CertStoreLocation Cert:\CurrentUser\My -FilePath $env:USERPROFILE\Desktop\certificate.pfx

Beachten Sie, dass das Kennwort eine sichere Zeichenfolge sein muss. Wenn Sie den Import in den Speicher des lokalen Computers (z.B. Cert:\LocalMachine\) durchführen möchten, müssen Sie den Befehl aus einer erhöhten Administrator-Eingabeaufforderung ausführen.

In obigem Beispiel verwenden Sie auch den Parameter Exportable zusammen mit dem Befehl, um den privaten Schlüssel in der Zukunft exportierbar zu machen. Standardmäßig ist der private Schlüssel nicht exportierbar. Exportierbare private Schlüssel sind ein weiterer Sicherheitsaspekt, dem besondere Aufmerksamkeit gewidmet werden sollte, um sie zu schützen.

Es gibt noch viele andere Dinge, die Sie mit Zertifikaten in Windows tun können, daher sollten Sie weiter erkunden.

Entfernen von Zertifikaten mit PowerShell

Beim Entfernen von Zertifikaten müssen Sie beachten, dass es keinen Papierkorb gibt. Sobald Sie ein Zertifikat gelöscht haben, ist es unwiederbringlich verloren. Daher ist es wichtig, sicherzustellen, dass Sie das richtige Zertifikat löschen, indem Sie einen eindeutigen Bezeichner wie die Seriennummer oder den Thumbprint-Wert überprüfen.

Ähnlich wie oben wählen wir im folgenden Befehl ein selbstsigniertes Zertifikat aus dem persönlichen Speicher des aktuellen Benutzers aus.

$certificate = Get-Item (Get-ChildItem -Path Cert:\CurrentUser\My\ | Where-Object {$_.Subject -eq $_.Issuer}).PSPath

Unten sehen Sie die Eigenschaften Thumbprint, Seriennummer und Betreff des ausgewählten Zertifikats, um sicherzustellen, dass es das beabsichtigte Zertifikat ist.

$certificate.Thumbprint
$certificate.SerialNumber
$certificate.Subject

Überprüfen Sie, ob Sie das richtige Zertifikat ausgewählt haben, das Sie löschen möchten.

Der untenstehende Befehl entfernt alle ausgewählten Zertifikatobjekte. Verwenden Sie ihn vorsichtig. Durch Übergeben des $certificate-Objekts über die Pipeline zum Remove-Item-Cmdlet im untenstehenden Befehl löschen Sie den gesamten Zertifikatsinhalt ohne jegliche Bestätigungsaufforderungen.

$certificate | Remove-Item

Zusammenfassung

In diesem Artikel haben Sie mit Zertifikaten in Windows gearbeitet und gelernt, wie Sie auf sie zugreifen und welche Tools Sie verwenden können. Es gibt noch viel mehr zu erkunden, wie z.B. wie man installierte Zertifikate bestimmten Diensten zuordnet oder sogar wie man eine private Public Key Infrastructure (PKI) implementiert, indem man eigene Zertifizierungsstellen (CA) bereitstellt.

Weiterführende Informationen

Source:
https://adamtheautomator.com/windows-certificate-manager/