Назад | Перейти на главную страницу

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

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

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

Оказывается, что большая часть данных конфигурации для RDSH хранится в Win32_TSGeneralSetting класс в WMI в root\cimv2\TerminalServices пространство имен. На настроенный сертификат для данного подключения ссылается значение отпечатка этого сертификата в свойстве с именем 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. Прокрутите вниз до поля Thumbprint и скопируйте шестнадцатеричную строку с разделителями-пробелами во что-нибудь вроде Блокнота.
  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"}

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

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

Тебе нужен твой 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