Es stellt sich heraus, dass ein Großteil der Konfigurationsdaten für RDSH in der Win32_TSGeneralSetting
Klasse in WMI im root\cimv2\TerminalServices
Namespace gespeichert ist . Das konfigurierte Zertifikat für eine bestimmte Verbindung wird durch den Thumbprint-Wert dieses Zertifikats in einer aufgerufenen Eigenschaft referenziert SSLCertificateSHA1Hash
.
UPDATE: Hier ist eine verallgemeinerte Powershell-Lösung, die den Fingerabdruck des ersten SSL-Zertifikats im persönlichen Geschäft des Computers erfasst und festlegt. Wenn Ihr System über mehrere Zertifikate verfügt, sollten Sie -Filter
dem gci
Befehl eine Option hinzufügen , um sicherzustellen, dass Sie auf das richtige Zertifikat verweisen. Ich habe meine ursprüngliche Antwort darunter als Referenz intakt gelassen.
# get a reference to the config instance
$tsgs = gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"
# grab the thumbprint of the first SSL cert in the computer store
$thumb = (gci -path cert:/LocalMachine/My | select -first 1).Thumbprint
# set the new thumbprint value
swmi -path $tsgs.__path -argument @{SSLCertificateSHA1Hash="$thumb"}
Um den Fingerabdruckwert zu erhalten
- Öffnen Sie den Eigenschaftsdialog für Ihr Zertifikat und wählen Sie die Registerkarte Details
- Scrollen Sie zum Feld "Fingerabdruck" und kopieren Sie die durch Leerzeichen getrennte Hex-Zeichenfolge in einen Editor
- Entfernen Sie alle Leerzeichen aus der Zeichenfolge. Sie sollten auch auf ein Nicht-ASCII-Zeichen achten und es entfernen, das manchmal direkt vor dem ersten Zeichen in der Zeichenfolge kopiert wird. Es ist im Editor nicht sichtbar.
- Dies ist der Wert, den Sie in WMI festlegen müssen. Es sollte ungefähr so aussehen: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .
Jetzt, da Sie den Fingerabdruckwert haben, können Sie diesen Wert mit einem Einzeiler mit wmic einstellen:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"
Oder wenn PowerShell Ihr Ding ist, können Sie dies stattdessen verwenden:
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}
Hinweis: Das Zertifikat muss sich im Zertifikatspeicher "Persönlich" für das Computerkonto befinden.