RDP-Zertifikat prüfen, tauschen und aus der eigenen CA beziehen

Jeder Windows-Rechner stellt sich für Remotedesktop ein eigenes, selbstsigniertes Zertifikat aus. Clients können es nicht prüfen und zeigen die bekannte Warnung „Die Identität des Remotecomputers kann nicht überprüft werden“. Wer sie täglich wegklickt, merkt auch einen echten Angriff nicht. Mit einer Vorlage aus der eigenen CA und einer Gruppenrichtlinie ist das in einer halben Stunde erledigt.

Welches Zertifikat nutzt RDP gerade?

$ts = Get-CimInstance -Namespace root\cimv2\TerminalServices -ClassName Win32_TSGeneralSetting -Filter "TerminalName='RDP-tcp'"
$ts.SSLCertificateSHA1Hash

# Zertifikat zum Fingerabdruck suchen (eigene Zertifikate oder RDP-Speicher)
Get-ChildItem Cert:\LocalMachine\My, 'Cert:\LocalMachine\Remote Desktop' |
  Where-Object Thumbprint -eq $ts.SSLCertificateSHA1Hash |
  Format-List PSParentPath, Subject, Issuer, NotAfter

Liegt das Zertifikat im Speicher „Remote Desktop“ und sind Inhaber und Aussteller gleich, ist es das selbstsignierte. Es ist nur wenige Monate gültig und wird vom Remotedesktopdienst vor Ablauf von selbst erneuert – ein Ausfall droht hier nicht, nur die Warnung bleibt.

Zertifikate aus der eigenen CA per Gruppenrichtlinie

  1. Vorlage anlegen: In der Konsole „Zertifikatvorlagen“ (certtmpl.msc) die Vorlage „Computer“ duplizieren, z. B. als RemoteDesktop. Unter „Erweiterungen → Anwendungsrichtlinien“ genügt „Serverauthentifizierung“; wer es eindeutig möchte, fügt „Remotedesktopauthentifizierung“ mit der OID 1.3.6.1.4.1.311.54.1.2 hinzu. Unter „Antragstellername“ bleibt „Aus Informationen in Active Directory erstellen“ mit DNS-Namen.
  2. Berechtigungen: Unter „Sicherheit“ der Gruppe „Domänencomputer“ (oder einer eigenen Servergruppe) Lesen und Registrieren erlauben.
  3. Veröffentlichen: In der Zertifizierungsstelle (certsrv.msc) → Zertifikatvorlagen → Neu → Auszustellende Zertifikatvorlage → RemoteDesktop.
  4. Gruppenrichtlinie: Computerkonfiguration → Richtlinien → Administrative Vorlagen → Windows-Komponenten → Remotedesktopdienste → Remotedesktop-Sitzungshost → Sicherheit → „Vorlage für Serverauthentifizierungszertifikat“ aktivieren und den Vorlagennamen eintragen (nicht den Anzeigenamen), hier RemoteDesktop.

Nach gpupdate /force beantragt der Remotedesktopdienst das Zertifikat selbst, bindet es und erneuert es rechtzeitig. Prüfen Sie nach einigen Minuten mit dem Befehl oben, ob der Fingerabdruck gewechselt hat.

Die Warnung verschwindet nur, wenn der Name, mit dem Sie sich verbinden, im Zertifikat steht. Verbinden Sie sich deshalb mit dem vollständigen Namen (srv01.firma.local), nicht mit der IP-Adresse oder dem Kurznamen.

Zertifikat von Hand zuweisen

Für Einzelfälle, etwa ein gekauftes Zertifikat, weisen Sie den Fingerabdruck direkt zu:

$thumb = 'HIER_FINGERABDRUCK_EINTRAGEN'
$ts = Get-CimInstance -Namespace root\cimv2\TerminalServices -ClassName Win32_TSGeneralSetting -Filter "TerminalName='RDP-tcp'"
Set-CimInstance -InputObject $ts -Property @{ SSLCertificateSHA1Hash = $thumb }

Das Zertifikat muss in „Eigene Zertifikate“ des Computers liegen und einen privaten Schlüssel haben. Der Remotedesktopdienst läuft als „Netzwerkdienst“ und braucht Lesezugriff darauf: certlm.msc → Zertifikat → Alle Aufgaben → Private Schlüssel verwalten → „NETZWERKDIENST“ mit „Lesen“ hinzufügen. Fehlt das Recht, kann der Dienst das Zertifikat nicht verwenden; Hinweise stehen im Ereignisprotokoll unter „TerminalServices-RemoteConnectionManager“.

Achtung: Von Hand zugewiesene Zertifikate erneuert niemand automatisch. Tragen Sie sich das Ablaufdatum ein oder wechseln Sie auf die Gruppenrichtlinie.

RD-Gateway, Web Access und Verbindungsbroker

In einer RDS-Bereitstellung haben die Rollen eigene Zertifikate – und die laufen oft unbemerkt ab, weil sie häufig von einer öffentlichen CA stammen und von Hand eingespielt wurden. Auf dem Verbindungsbroker:

Get-RDCertificate | Format-Table Role, Subject, ExpiresOn, Level

# Neues Zertifikat (PFX) für eine Rolle einspielen
Set-RDCertificate -Role RDGateway -ImportPath C:\certs\rds.pfx -Password (Read-Host -AsSecureString) -Force

Wiederholen Sie Set-RDCertificate für jede Rolle, die dasselbe Zertifikat nutzt (RDGateway, RDWebAccess, RDRedirector, RDPublishing).

Weiterführend

Welche weiteren Dienste auf einem Server Zertifikate nutzen und wie Sie ablaufende finden, zeigt der Ratgeber Ablaufende Zertifikate auf Windows-Servern finden.

Weitere Ratgeber