Skonfigurować niestandardowy certyfikat SSL dla RDP w systemie Windows Server 2012 w trybie administracji zdalnej?

52

Tak więc wydanie systemu Windows Server 2012 usunęło wiele starych narzędzi konfiguracyjnych związanych z Pulpitem zdalnym. W szczególności nie ma już narzędzia do konfiguracji hosta sesji pulpitu zdalnego, które zapewniłoby dostęp do okna właściwości RDP-Tcp, które pozwala skonfigurować niestandardowy certyfikat do użycia przez RDSH. Na jego miejscu znajduje się ładny nowy skonsolidowany interfejs GUI, który jest częścią ogólnego przepływu pracy „edytuj właściwości wdrażania” w nowym Menedżerze serwera. Problem polega na tym, że dostęp do tego przepływu pracy uzyskuje się tylko wtedy, gdy masz zainstalowaną rolę usług pulpitu zdalnego (o ile wiem).

To wydaje się trochę przeoczeniem ze strony Microsoftu. Jak możemy skonfigurować niestandardowy certyfikat SSL dla RDP w systemie Windows Server 2012, gdy działa on w domyślnym trybie administracji zdalnej bez konieczności instalowania roli usług pulpitu zdalnego?

Ryan Bolger
źródło
Powiązane -> superuser.com/questions/1093159/…
FreeSoftwareServers

Odpowiedzi:

80

Okazuje się, że wiele danych konfiguracyjnych dla RDSH jest przechowywanych w Win32_TSGeneralSettingklasie w WMI w root\cimv2\TerminalServicesprzestrzeni nazw. Do skonfigurowanego certyfikatu dla danego połączenia odwołuje się wartość odcisku palca tego certyfikatu dla właściwości o nazwie SSLCertificateSHA1Hash.


AKTUALIZACJA: Oto uogólnione rozwiązanie Powershell, które pobiera i ustawia odcisk palca pierwszego certyfikatu SSL w osobistym sklepie komputera. Jeśli twój system ma wiele certyfikatów, powinieneś dodać -Filteropcję do gcipolecenia, aby upewnić się, że odwołujesz się do poprawnego certyfikatu. Pozostawiłem swoją oryginalną odpowiedź nienaruszoną poniżej w celach informacyjnych.

# 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"}

Aby uzyskać wartość odcisku palca

  1. Otwórz okno dialogowe właściwości certyfikatu i wybierz kartę Szczegóły
  2. Przewiń w dół do pola Odcisk palca i skopiuj ciąg szesnastkowy rozdzielany spacjami do czegoś takiego jak Notatnik
  3. Usuń wszystkie spacje z ciągu. Będziesz także musiał uważać i usuwać nie-ascii, które czasami są kopiowane tuż przed pierwszym znakiem w ciągu. Nie jest to widoczne w Notatniku.
  4. Jest to wartość, którą musisz ustawić w WMI. Powinno to wyglądać mniej więcej tak: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .

Teraz, gdy masz już wartość odcisku palca, oto jeden wiersz, którego możesz użyć do ustawienia wartości za pomocą wmic:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"

Lub jeśli PowerShell jest twoją rzeczą, możesz użyć tego zamiast tego:

$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}

Uwaga: certyfikat musi znajdować się w „osobistym” magazynie certyfikatów dla konta komputera.

Ryan Bolger
źródło
3
Chciałem tylko dodać, że uratowało mnie to od czystego krachu. Dziękuję Ci. Instalowanie ról i restartowanie serwerów zgodnie z sugestiami w ramach technet i tym podobnych jest absurdalne. Nawet wtedy, po zainstalowaniu certyfikatu SSL w RD Gateway Manager, nie jest on przenoszony na zdalne logowanie administratora.
Papa
2
Wielkie dzięki za to. Musiałem przeszukać wszystkie google, zanim to znalazłem. Zbyt wiele wyników mówi, żebym instalował „Usługi pulpitu zdalnego” za pośrednictwem „Dodaj role i funkcje”, ale zrobienie tego wymaga przyłączenia się do domeny.
Sethi
2
Jeśli spróbuję to zrobić za pomocą skryptu PS, otrzymam komunikat „Nieprawidłowy parametr”. Ten sam problem, jeśli robię to również ręcznie ...
deed02392
1
Otrzymywałem nieprawidłowy argument przy użyciu wszystkich metod, dopóki nie zaimportowałem ponownie certyfikatu, w tym kluczy prywatnych. Prosty błąd.
toffitomek
2
Ja znowu: D Dostaję ten błąd „Nieprawidłowy parametr” w Powershell również podczas działania wmic. Właśnie zobaczyłem notatkę na dole. Upewnij się, że certyfikat również znajduje się w sklepie osobistym. Tym razem mój był w sklepie Web Hosting ...
Sethi
4

Jeśli podczas próby rozwiązania Ryana pojawia się „Nieprawidłowy parametr”, upewnij się, że używasz wiersza polecenia z podwyższonym poziomem uprawnień (uruchom jako administrator).

David Literak
źródło
Nie mogę uwierzyć, że to nie ma pozytywnego wyniku!
Adrian Godong,
0

Potrzebujesz swojego domain.pfx odcisku palca w pliku txt SSLCertificateSHA1Hash.txt.

Następnie uruchom to w CMD:

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
FreeSoftwareServers
źródło