Оказывается, что большая часть данных конфигурации для 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"}
Для того, чтобы получить значение отпечатка
- Откройте диалоговое окно свойств для вашего сертификата и выберите вкладку Подробнее
- Прокрутите вниз до поля «Отпечаток» и скопируйте шестнадцатеричную строку, разделенную пробелом, в блокнот
- Удалите все пробелы из строки. Вы также захотите следить и удалять не-ascii-символы, которые иногда копируются непосредственно перед первым символом в строке. Это не видно в блокноте.
- Это значение, которое вам нужно установить в 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"}
Примечание: сертификат должен находиться в «Персональном» хранилище сертификатов для учетной записи компьютера.