Настроить настраиваемый сертификат SSL для RDP в Windows Server 2012 (и более поздних версиях) в режиме удаленного администрирования?

53

Таким образом, в выпуске Windows Server 2012 было удалено множество старых утилит настройки, связанных с удаленным рабочим столом. В частности, больше не существует утилиты « Конфигурация узла сеанса удаленного рабочего стола», которая давала бы вам доступ к диалоговому окну свойств RDP-Tcp, позволяющему настроить настраиваемый сертификат для использования RDSH. На его месте новый приятный консолидированный графический интерфейс, который является частью общего рабочего процесса «редактирования свойств развертывания» в новом диспетчере сервера. Суть в том, что вы получаете доступ к этому рабочему процессу, только если у вас установлена ​​роль Службы удаленных рабочих столов (насколько я могу судить).

Это похоже на недосмотр со стороны Microsoft. Как настроить настраиваемый сертификат SSL для RDP в Windows Server 2012, когда он работает в режиме удаленного администрирования по умолчанию, без необходимости устанавливать роль служб удаленных рабочих столов?

Райан Болджер
источник
Связанные -> superuser.com/questions/1093159/…
FreeSoftwareServers

Ответы:

81

Оказывается, что большая часть данных конфигурации для RDSH хранится в Win32_TSGeneralSettingклассе в WMI в root\cimv2\TerminalServicesпространстве имен. На настроенный сертификат для данного соединения ссылается значение Thumbprint этого сертификата в вызываемом свойстве SSLCertificateSHA1Hash.


ОБНОВЛЕНИЕ: Вот обобщенное решение Powershell, которое захватывает и устанавливает отпечаток первого сертификата SSL в персональном хранилище компьютера. Если в вашей системе несколько сертификатов, вам нужно добавить -Filterв gciкоманду опцию, чтобы убедиться, что вы ссылаетесь на правильный сертификат. Я оставил свой оригинальный ответ без изменений ниже для справки.

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

Для того, чтобы получить значение отпечатка

  1. Откройте диалоговое окно свойств для вашего сертификата и выберите вкладку Подробнее
  2. Прокрутите вниз до поля «Отпечаток» и скопируйте шестнадцатеричную строку, разделенную пробелом, в блокнот
  3. Удалите все пробелы из строки. Вы также захотите следить и удалять не-ascii-символы, которые иногда копируются непосредственно перед первым символом в строке. Это не видно в блокноте.
  4. Это значение, которое вам нужно установить в WMI. Это должно выглядеть примерно так: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .

Теперь, когда у вас есть значение отпечатка, вот одна строка, которую вы можете использовать для установки значения с помощью wmic:

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

Или, если PowerShell - ваша вещь, вы можете использовать это вместо:

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

Примечание: сертификат должен находиться в «Персональном» хранилище сертификатов для учетной записи компьютера.

Райан Болджер
источник
3
Просто хотел добавить, что это спасло меня от чистого краха. Спасибо. Установка ролей и перезапуск серверов, как это предлагается в рамках technet и т.п., просто смешны. Даже тогда, когда вы устанавливаете сертификат SSL в RD Gateway Manager, он не переносится на удаленный вход администратора.
Папа
2
Большое спасибо за это. Должно быть, я искал все Google, прежде чем я нашел это. Слишком много результатов говорят мне об установке «Службы удаленных рабочих столов» через «Добавить роли и функции», но для этого необходимо присоединиться к домену.
Сетхи
2
Если я пытаюсь сделать это, используя ваш скрипт PS, я получаю «Неверный параметр». Та же проблема, если я тоже это сделаю вручную ...
deed02392
1
Я получал неверный аргумент, используя все методы, пока я не импортировал сертификат, включая закрытые ключи. Простая ошибка
Тоффитомек
2
Я снова: D Я получаю эту ошибку "Недопустимый параметр" в Powershell при запуске wmic. Просто видел записку внизу. Убедитесь, что сертификат находится в личном магазине тоже. Мой был в магазине веб-хостинга на этот раз ...
Сетхи
4

Если вы получаете «Неверный параметр» при попытке решения Райана, убедитесь, что вы используете командную строку с повышенными правами (запуск от имени администратора).

Дэвид Литерак
источник
Не могу поверить, что это не имеет upvote!
Адриан Годонг
0

Вам нужен ваш domain.pfx & отпечаток пальца в текстовом файле SSLCertificateSHA1Hash.txt.

Затем запустите это в 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
источник