Benutzerdefiniertes SSL-Zertifikat für RDP unter Windows Server 2012 im Remoteverwaltungsmodus konfigurieren?


52

Mit der Veröffentlichung von Windows Server 2012 wurden viele der alten Konfigurationsdienstprogramme für Remotedesktop entfernt. Insbesondere gibt es kein Dienstprogramm zur Konfiguration des Remotedesktop- Sitzungshosts mehr , mit dem Sie auf das Dialogfeld mit den RDP-Tcp-Eigenschaften zugreifen können, mit dem Sie ein benutzerdefiniertes Zertifikat für die Verwendung von RDSH konfigurieren können. Stattdessen gibt es eine schöne neue konsolidierte Benutzeroberfläche, die Teil des gesamten Workflows zum Bearbeiten von Bereitstellungseigenschaften im neuen Server-Manager ist. Der Haken ist, dass Sie nur dann auf diesen Workflow zugreifen können, wenn Sie die Rolle "Remotedesktopdienste" installiert haben (soweit ich das beurteilen kann).

Dies scheint für Microsoft ein Versehen zu sein. Wie kann ein benutzerdefiniertes SSL-Zertifikat für RDP unter Windows Server 2012 konfiguriert werden, wenn es im Standardmodus für die Remoteverwaltung ausgeführt wird, ohne dass die Remotedesktopdienste-Rolle unnötig installiert werden muss?


Antworten:


80

Es stellt sich heraus, dass ein Großteil der Konfigurationsdaten für RDSH in der Win32_TSGeneralSettingKlasse in WMI im root\cimv2\TerminalServicesNamespace 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 -Filterdem gciBefehl 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

  1. Öffnen Sie den Eigenschaftsdialog für Ihr Zertifikat und wählen Sie die Registerkarte Details
  2. Scrollen Sie zum Feld "Fingerabdruck" und kopieren Sie die durch Leerzeichen getrennte Hex-Zeichenfolge in einen Editor
  3. 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.
  4. 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.


3
Ich wollte nur hinzufügen, dass das mich vor dem reinen Zusammenbruch bewahrt hat. Danke. Das Installieren der Rollen und das Neustarten von Servern, wie in technet und dergleichen vorgeschlagen, ist lächerlich. Selbst dann, wenn Sie das SSL-Zertifikat in RD-Gateway-Manager installieren, wird es nicht auf die Remoteadministratoranmeldung übertragen.
Papa

2
Vielen Dank dafür. Ich must've gesucht alle Google , bevor ich diese gefunden. Es gibt zu viele Ergebnisse, die mich dazu veranlassen, "Remotedesktopdienste" über "Rollen und Funktionen hinzufügen" zu installieren. Dazu müssen Sie jedoch einer Domäne beitreten.
Sethi

2
Wenn ich es mit Ihrem PS-Skript versuche, erhalte ich "Invalid Parameter". Dasselbe Problem, wenn ich es auch manuell
mache

1
Ich habe mit allen Methoden ein ungültiges Argument erhalten , bis ich das Zertifikat einschließlich der privaten Schlüssel erneut importiert habe . Einfacher Fehler.
Toffitomek

2
Ich wiederhole: D Ich erhalte den Fehler "Ungültiger Parameter" auch in Powershell beim Ausführen wmic. Habe gerade die Notiz unten gesehen. Stellen Sie sicher, dass sich das Zertifikat auch im persönlichen Speicher befindet. Meins war diesmal im Webhosting-Store ...
Sethi

4

Wenn Sie beim Testen von Ryans Lösung "Ungültiger Parameter" erhalten, stellen Sie sicher, dass Sie eine Eingabeaufforderung mit erhöhten Rechten verwenden (als Administrator ausführen).


Kann nicht glauben, dass dies keine Gegenstimme hat!
Adrian Godong

0

Sie benötigen Ihren domain.pfx & Fingerabdruck in einer txt-Datei SSLCertificateSHA1Hash.txt.

Dann führen Sie dies in CMD aus:

pushd %~dp0
cls
::FreeSoftwareServers.com

certutil.exe -p "" -importpfx "%~dp0domain.pfx"
set /p FingerPrint=<"%~dp0SSLCertificateSHA1Hash.txt"
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="%FingerPrint%"
icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\*" /grant "NETWORK SERVICE":R
shutdown /r /t 5
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.