Acontece que muitos dos dados de configuração do RDSH são armazenados na Win32_TSGeneralSetting
classe WMI no root\cimv2\TerminalServices
espaço para nome. O certificado configurado para uma determinada conexão é referenciado pelo valor de Impressão digital desse certificado em uma propriedade chamada SSLCertificateSHA1Hash
.
ATUALIZAÇÃO: Aqui está uma solução Powershell generalizada que captura e define a impressão digital do primeiro certificado SSL na loja pessoal do computador. Se o seu sistema possui vários certificados, você deve adicionar uma -Filter
opção ao gci
comando para certificar-se de referenciar o 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
- Role para baixo até o campo Impressão digital e copie a sequência hexadecimal delimitada por espaço para algo como o Bloco de notas
- Remova todos os espaços da sequência. Você também deve estar atento e remover um caractere não-ascii que às vezes é copiado antes do primeiro caractere da string. Não é visível no bloco de notas.
- Este é 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á uma lista que você pode usar para definir o valor usando wmic:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"
Ou, se você preferir o PowerShell, use:
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}
Nota: o certificado deve estar no repositório de certificados 'Pessoal' da conta do computador.