Abgelaufene Zertifikate finden und ersetzen Zertifikate in Windows mit der PowerShell verwalten

Autor / Redakteur: Thomas Joos / Peter Schmitz

Die Verwaltung von Zertifikaten spielt auch in Windows eine immer wichtigere Rolle. Neben Tools für die grafische Oberfläche kann die Verwaltung auch in der PowerShell vorgenommen werden. Wir zeigen die Vorgehensweise.

Wir zeigen, wie man in Windows Zertifikate mit der PowerShell verwaltet.
Wir zeigen, wie man in Windows Zertifikate mit der PowerShell verwaltet.
(© Dmitry Nikolaev - stock.adobe.com)

Um Zertifikate in Windows zu verwalten, werden in den meisten Fällen die Tools aus der grafischen Oberfläche verwendet. Die Zertifikate des lokalen Computers werden mit „certlm.msc“ verwaltet, die Zertifikate des Benutzers mit „certmgr.msc“. Die Verwaltungsoberfläche für einen Zertifizierungsserver steht über „certsrv.msc“ zur Verfügung, parallel zur Weboberfläche, wenn diese installiert wurde.

Die Vorlagen auf Servern werden wiederum mit „certtmpl.msc“ verwaltet. Diese Tools können parallel zur PowerShell genutzt werden, um Zertifikate in der grafischen Oberfläche zu verwalten. Über die PowerShell können die Tools aus der grafischen Oberfläche direkt gestartet werden, sodass eine parallel Arbeit mit der GUI und der PowerShell ideal ist.

Bildergalerie
Bildergalerie mit 5 Bildern

Zertifikate als Laufwerk öffnen

Mit PowerShell-Providern können verschiedene Bereiche von Computern auch als Laufwerk angesprochen werden. Beispiele dafür sind die Registry aber auch Zertifikate. Nach dem Start einer PowerShell-Sitzung kann mit „cd cert:\“ in das Laufwerk für die Zertifikate gewechselt werden. Mit „dir“ wird der Inhalt des Laufwerks angezeigt.

Um die Zertifikatespeicher für Benutzer anzuzeigen, wird mit „cd CurrentUser“ in das Benutzerverzeichnis gewechselt, mit „cd LocalMachine“ zeigt die PowerShell die Zertifikatespeicher des Computers an. Mit „cd“ kann in die verschiedenen Zertifikatespeicher gewechselt werden, zum Beispiel mit „cd my“ in den Speicher für die Zertifikate des Computers oder des Benutzers. Hier sind auch die Fingerabdrücke (Thumbprint) der Zertifikate zu sehen. Über die Fingerabdrücke können die Zertifikate genauer abgefragt werden.

Neben „dir“ können auch „Get-ChildItem“ oder die Abkürzung „gci“ genutzt werden. Sollen die Zertifikate angezeigt werden, die in den nächsten 30 Tagen ablaufen, steht der Befehl „gci cert:\ -recurse -ExpiringInDays 30“ zur Verfügung.

Über das Laufwerk der PowerShell zur Verwaltung von Zertifikaten können auch Infos zu Zertifikatespeichern auf einem Computer angezeigt werden:

get-item -path cert:\CurrentUser\My | format-list *

Einzelne Zertifikate lassen sich am besten über ihren Fingerabdruck (Thumbprint) identifizieren. Um Informationen zu einem bestimmten Zertifikat anzuzeigen, wird zum Beispiel der folgende Befehl verwendet:

get-childitem -path cert:\CurrentUser\my\<Thumbprint> | format-list -property *

Den Wert für “Thumbprint“ zeigt die PowerShell an, wenn der Inhalt des entsprechenden Laufwerks aufgerufen wird, zum Beispiel:

get-childitem -path cert:\CurrentUser\my\5881093B81B433A535F612265D4E5196CD15149D| format-list -property *

In der PowerShell können auch alle abgelaufenen Zertifikate angezeigt werden. Für die Benutzerzertifikate wird dazu nach dem Öffnen des Zertifikate-Laufwerks der folgende Befehl verwendet:

gci Cert:\CurrentUser\my | ?{$_.NotAfter -lt (get-date)} | select Thumbprint,NotAfter,Subject

Um die abgelaufenen Zertifikate des Computer anzuzeigen, muss bei dem Befehl der Zertifikatespeicher geändert werden:

gci Cert:\CurrentUser\my | ?{$_.NotAfter -lt (get-date)} | select Thumbprint,NotAfter,Subject

Zertifikate , anfragen installieren, importieren oder löschen

Neben der Anzeige von Zertifikaten können diese in der PowerShell auch installiert werden:

Import-Certificate -FilePath “<Pfad zum zertifikat>” -CertStoreLocation cert:\LocalMachine\Root -verbose

Auch das Entfernen von Zertifikaten ist in der PowerShell möglich:

Remove-Item -Path cert:\LocalMachine\Root\<ID> -verbose

Für Test- und Entwicklungsumgebungen, oder wenn selbstsignierte Zertifikate auf einem Computer ausreichen, können in der PowerShell auch selbstsignierte Zertifikate ausgestellt werden. Dazu wird das Cmdlet „New-SelfSignedCertificate“ genutzt. Um ein selbstsigniertes Zertifikat auszustellen, kann zum Beispiel folgender Befehl verwendet werden:

New-SelfSignedCertificate -DnsName "www.fabrikam.com", "www.contoso.com" -CertStoreLocation "cert:\LocalMachine\My"

Mit dem Cmdlets lassen sich auch eigene SAN-Zertifikate ausstellen:

New-SelfSignedCertificate -DNSName "server1.your.domain", "server2.your.domain" -certstorelocation cert:\localmachine\my

Mit dem Cmdlet “Get-Certificate” können Zertifikatanfragen zu einer Zertifizierungsstelle übertragen und die erhaltenen Zertifikate auch gleich installiert werden. Ein Beispiel für die Ausführung ist:

$up = Get-CredentialGet-Certificate -Template SslWebServer -DnsName www.contoso.com,www.fabrikam.com -Url https://www.contoso.com/Policy/service.svc -Credential $up -CertStoreLocation cert:\LocalMachine\My

Zertifizierungsstellen und die PowerShell

Auch Windows-Server, die als Zertifizierungsstellen genutzt werden, lassen sich über die PowerShell steuern. Neben den beiden Tools zur Verwaltung von lokalen Zertifikaten (certlm.msc, certmgr.msc) können Zertifikate aber auch in der PowerShell abgefragt und gesteuert werden. Zusätzlich kann noch das Befehlszeilentool „certuil.exe“ auch in der PowerShell genutzt werden. Über die PowerShell kann hier auch eine Sicherung erfolgen:

Backup-CARoleService -path C:\Backup -Password (Read-Host -prompt "Password:" -AsSecureString)

(ID:47354913)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist