WinRM: Zertifikat des HTTPS-Listeners austauschen
Zertifikat des WinRM-HTTPS-Listeners (Port 5986) austauschen: Anforderungen, Fingerabdruck mit Set-WSManInstance setzen, Fehler 0x80338115 beheben, Remoting erhalten.
WinRM über HTTPS lauscht standardmäßig auf TCP 5986. Der HTTPS-Listener speichert den Fingerabdruck des Zertifikats und den Hostnamen selbst. Ein neu importiertes Zertifikat ändert deshalb nichts an dem, was PowerShell-Remoting ausliefert - der Listener muss darauf umgestellt werden.
Voraussetzungen
- Sorgen Sie für einen Zugang, der nicht vom HTTPS-Listener abhängt: eine lokale oder VM-Konsole, Out-of-Band-Management (iLO, iDRAC) oder den WinRM-HTTP-Listener auf Port 5985. Testen Sie ihn vorher. Ein falscher Fingerabdruck oder Hostname legt den HTTPS-Listener lahm, und eine Remotesitzung darüber kann sich nicht selbst reparieren.
- Microsofts Anforderungen an das Zertifikat:
- unter Zertifikate (Lokaler Computer) > Eigene Zertifikate, mit privatem Schlüssel,
- Serverauthentifizierung in der erweiterten Schlüsselverwendung,
- der Hostname des Listeners im CN oder exakt als einer der SANs,
- nicht abgelaufen, nicht gesperrt und nicht selbstsigniert.
Zertifikat Schritt für Schritt austauschen
-
Aktuellen Listener anzeigen und seine Einstellungen notieren, vor allem den
CertificateThumbprint- Sie brauchen ihn für einen Rollback:winrm enumerate winrm/config/listener Get-ChildItem WSMan:\localhost\Listener -
PFX-Datei neben dem alten Zertifikat in den Speicher Eigene Zertifikate des lokalen Computers importieren und den neuen Fingerabdruck auslesen:
$cert = Import-PfxCertificate -FilePath C:\secure\server.pfx ` -CertStoreLocation Cert:\LocalMachine\My -Password (Read-Host -AsSecureString) $cert.Thumbprint -
Den vorhandenen HTTPS-Listener auf das neue Zertifikat umstellen:
$selector = @{Address="*";Transport="HTTPS"} $values = @{Hostname="server.example.com";CertificateThumbprint="<fingerabdruck>";Port="5986"} Set-WSManInstance -ResourceURI winrm/config/Listener -SelectorSet $selector -ValueSet $valuesBehalten Sie Adresse, Hostname und Port bei, die der Listener in Schritt 1 gezeigt hat;
Hostnamemuss ein Name im Zertifikat sein. Gibt es noch keinen HTTPS-Listener, legtNew-WSManInstancemit denselben Werten einen an, oder Sie führenwinrm quickconfig -transport:httpsaus, das selbst ein passendes Zertifikat wählt. -
Bevor Sie Ihre aktuelle Sitzung schließen, öffnen Sie eine zweite Verbindung über HTTPS (siehe Prüfen). Erst wenn sie funktioniert, schließen Sie die erste. Der WinRM-Dienst braucht keinen Neustart. Haben Sie auch den Port geändert, geben Sie ihn in der Windows-Firewall frei.
Neues Zertifikat prüfen
winrm enumerate winrm/config/listener
Test-WSMan -ComputerName server.example.com -UseSSL -Port 5986
Enter-PSSession -ComputerName server.example.com -UseSSL -Port 5986Der Fingerabdruck in der Listener-Ausgabe muss zum neuen Zertifikat passen. Führen Sie die Tests von einem entfernten Client aus, der der Kette vertraut, nicht nur lokal.
Rollback
Setzen Sie den alten CertificateThumbprint aus Schritt 1 mit demselben
Set-WSManInstance-Befehl - über den anderen Zugang, falls der HTTPS-Listener nicht mehr
antwortet. Das setzt voraus, dass das alte Zertifikat noch im Speicher liegt und gültig
ist.
Häufige Probleme
- Fehler 0x80338115 - "Cannot create a WinRM listener on HTTPS because this machine does not have an appropriate certificate": CN oder SAN passen nicht zum Hostnamen, Serverauthentifizierung fehlt, das Zertifikat ist abgelaufen, gesperrt oder selbstsigniert, oder es liegt nicht im Speicher des lokalen Computers.
- Mehrere passende Zertifikate sind installiert, und der Listener nutzt ein anderes als
gedacht - vergleichen Sie den Fingerabdruck in
winrm enumerate winrm/config/listener. - Der Fernzugriff ging verloren, weil der Listener über dieselbe HTTPS-Sitzung geändert wurde, ohne getesteten zweiten Zugang - reparieren Sie ihn über Konsole oder HTTP-Listener.
- Port 5986 oder ein eigener Port ist blockiert.
Zertifikatstausch mit aethercert automatisieren
Das aethercert-Deployment-Ziel für WinRM importiert das Zertifikat und ersetzt den lokalen HTTPS-Listener mit dem konfigurierten Hostnamen und Port.
Unter Deployment-Ziele finden Sie die Felder dieser Vorlage, die Voraussetzungen auf dem Host und den Stand der Verifizierung.
Quellen
Remotedesktopdienste (RDS)
Zertifikate für RD-Gateway, RD-Web Access, Verbindungsbroker-Umleitung und Veröffentlichung mit Get-RDCertificate und Set-RDCertificate austauschen und jede Rolle prüfen.
Microsoft SQL Server
Neues TLS-Zertifikat für die SQL-Server-Verschlüsselung einrichten: Konfigurations-Manager, Schlüsselzugriff, Registry bei Clustern und Wildcards, Neustart und Prüfung.