Acontece que muitos dos dados de configuração do RDSH são armazenados na classe Win32_TSGeneralSetting
no WMI no namespace root\cimv2\TerminalServices
. O certificado configurado para uma determinada conexão é referenciado pelo valor Thumbprint desse certificado em uma propriedade chamada SSLCertificateSHA1Hash
.
ATUALIZAÇÃO: Aqui está uma solução generalizada da Powershell que agarra e define a impressão digital do primeiro certificado SSL na loja pessoal do computador. Se o seu sistema tiver vários certs, você deverá adicionar uma opção -Filter
ao comando gci
para certificar-se de fazer referência ao certificado correto. Deixei minha resposta original intacta abaixo disso para referência.
# 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"}
Para obter o valor da impressão digital
- Abra a caixa de diálogo de propriedades do seu certificado e selecione a guia Detalhes
- Desloque-se para o campo Impressão digital e copie a cadeia hexadecimal delimitada por espaço para algo como o Bloco de notas
- Remove todos os espaços da string. Você também vai querer ficar de olho e remover um caractere não ascii que às vezes é copiado logo antes do primeiro caractere da string. Não é visível no bloco de notas.
- Esse é o valor que você precisa definir no WMI. Deve ser algo como isto: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .
Agora que você tem o valor da impressão digital, aqui está um verso que você pode usar para definir o valor usando wmic:
wmic /namespace:\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"
Ou se o PowerShell é sua coisa, você pode usar isso:
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}
Observação: o certificado deve estar no armazenamento de certificados 'Pessoal' da conta do computador.