RDP-Zertifikat unter Windows Server ändern
Zertifikat des RDP-Listeners eines einzelnen Windows-Servers ändern: SSLCertificateSHA1Hash per PowerShell/WMI oder Registry setzen, NETWORK SERVICE Schlüsselzugriff geben, prüfen.
Ein einzelner Remotedesktop-Listener wählt sein Zertifikat per SHA-1-Fingerabdruck aus dem Speicher Eigene Zertifikate des lokalen Computers. Das ist etwas anderes als die Rollenzertifikate einer vollständigen Remotedesktopdienste-Bereitstellung, die über den RD-Verbindungsbroker zugewiesen werden - dafür siehe die Anleitung zu den Remotedesktopdiensten.
Voraussetzungen
- Halten Sie einen zweiten Zugang bereit (Konsole oder einen anderen Fernzugriff), falls der Listener falsch konfiguriert wird.
- Besorgen Sie eine PFX-Datei mit privatem Schlüssel, der EKU Serverauthentifizierung und dem FQDN des Servers im SAN.
- Notieren Sie den aktuellen Fingerabdruck (siehe Schritt 2), um zurückwechseln zu können.
- Prüfen Sie, ob eine Gruppenrichtlinie das Listener-Zertifikat verwaltet - Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Security > Server authentication certificate template. Ein per Richtlinie erzwungenes Zertifikat überschreibt eine lokale Einstellung.
- Verwenden Sie für die Befehle unten Windows PowerShell 5.1 (
powershell.exe). Die*-WmiObject-Cmdlets gibt es in PowerShell 7 (pwsh) nicht.
Zertifikat Schritt für Schritt austauschen
-
Importieren Sie die PFX-Datei unter Zertifikate (Lokaler Computer) > Eigene Zertifikate. Der Listener läuft unter NETZWERKDIENST (NETWORK SERVICE); geben Sie diesem Konto Lesen auf den privaten Schlüssel:
certlm.msc> rechte Maustaste auf das Zertifikat > Alle Aufgaben > Private Schlüssel verwalten > HinzufügenNETWORK SERVICE> Lesen. -
Aktuellen Wert anzeigen, dann den neuen Fingerabdruck setzen:
$ts = Get-WmiObject -Class Win32_TSGeneralSetting ` -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'" $ts.SSLCertificateSHA1Hash # aktueller Fingerabdruck $thumbprint = "<neuer-fingerabdruck>" -replace '[^0-9A-Fa-f]','' $ts | Set-WmiInstance -Arguments @{SSLCertificateSHA1Hash=$thumbprint}Das
-replaceentfernt Leerzeichen und das unsichtbare Zeichen, das der Zertifikatsdialog beim Kopieren eines Fingerabdrucks mitliefert - eine häufige Ursache für "Invalid Parameter". Derselbe Fehler erscheint, wenn das Zertifikat nicht im Speicher Eigene Zertifikate des Computers liegt. -
Wert zurücklesen und mit dem Zertifikat vergleichen:
(Get-WmiObject -Class Win32_TSGeneralSetting -Namespace root\cimv2\terminalservices ` -Filter "TerminalName='RDP-tcp'").SSLCertificateSHA1Hash Get-Item "Cert:\LocalMachine\My\$thumbprint" | Format-List Subject,NotAfter,HasPrivateKey
Neue Verbindungen nutzen das neue Zertifikat; bestehende Sitzungen laufen weiter und
sind kein verlässlicher Test. Ein Neustart ist normalerweise nicht nötig - zeigen neue
Verbindungen noch das alte Zertifikat, starten Sie den Dienst Remotedesktopdienste
(TermService) neu, was die Sitzungen auf diesem Server beendet.
Alternative: die Registry
Microsoft dokumentiert auch, den Fingerabdruck als Binärwert in der Registry zu setzen:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp, Wert
SSLCertificateSHA1Hash (REG_BINARY) mit den Bytes des Fingerabdrucks. Die
Berechtigung für NETWORK SERVICE aus Schritt 1 ist auch hier nötig. Der WMI-Weg oben ist
einfacher und leichter zu prüfen.
Produktspezifische Hinweise
Diese Seite gilt für Server, deren RDP-Listener Sie einzeln verwalten - einen einzelnen
Server oder den eigenen Listener eines Sitzungshosts. Die Zertifikate, die Nutzer in
einer RDS-Farm sehen (Gateway, Web Access, Umleitung über den Verbindungsbroker),
richten Sie in der
Anleitung zu den Remotedesktopdiensten
ein. Ältere Anleitungen nutzen für dieselbe Änderung wmic; wmic ist in aktuellen
Windows-Versionen veraltet, nehmen Sie PowerShell.
Neues Zertifikat prüfen
Öffnen Sie mit mstsc.exe eine neue Verbindung über den FQDN im SAN. Klicken Sie im
Vollbild auf das Schloss in der Verbindungsleiste > Zertifikat anzeigen >
Details und vergleichen Sie den Fingerabdruck mit dem gesetzten Wert. Testen Sie
von einem Client, der der vollständigen Kette vertraut; es darf keine
Zertifikatswarnung erscheinen.
Rollback
Setzen Sie SSLCertificateSHA1Hash mit demselben Befehl auf den alten Fingerabdruck
zurück. Behalten Sie altes Zertifikat und Schlüssel, bis mehrere neue Verbindungen
geklappt haben.
Hat der Server vorher sein selbstsigniertes Zertifikat verwendet, liegt dieses im Speicher Remote Desktop des Computers; setzen Sie dessen Fingerabdruck, um zurückzukehren:
Get-ChildItem 'Cert:\LocalMachine\Remote Desktop' | Format-Table Thumbprint,Subject,NotAfterHäufige Probleme
- Das Zertifikat liegt im Speicher des aktuellen Benutzers oder hat keinen privaten Schlüssel.
- Ein unsichtbares Zeichen wurde in den Fingerabdruck kopiert.
- NETWORK SERVICE kann den privaten Schlüssel nicht lesen.
- Der Client verbindet sich per IP-Adresse, das Zertifikat enthält aber nur einen DNS-Namen.
- Eine Gruppenrichtlinie ersetzt die lokale Listener-Einstellung.
Zertifikatstausch mit aethercert automatisieren
Das aethercert-Deployment-Ziel für RDP/RDS-Listener importiert das Zertifikat und aktualisiert den WMI-Fingerabdruck des lokalen Listeners. Es ist für einen einzelnen Listener gedacht, nicht für die Rollenzertifikate einer vollständigen RDS-Bereitstellung.
Unter Deployment-Ziele finden Sie die Felder dieser Vorlage, die Voraussetzungen auf dem Host und den Stand der Verifizierung.
Quellen
Microsoft AD FS
AD-FS-Zertifikat austauschen mit Set-AdfsSslCertificate und Set-AdfsAlternateTlsClientBinding, WAP aktualisieren, Schlüsselzugriff prüfen und die Farm verifizieren.
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.