Configure o certificado SSL personalizado para o RDP no Windows Server 2012 no modo Administração Remota?

50

Portanto, o lançamento do Windows Server 2012 removeu muitos dos antigos utilitários de configuração relacionados à área de trabalho remota. Em particular, não há mais nenhum utilitário Configuração do Host da Sessão da Área de Trabalho Remota que forneça acesso à caixa de diálogo Propriedades do RDP-Tcp que permite configurar um certificado personalizado para ser usado pelo RDSH. Em seu lugar está uma nova GUI consolidada que faz parte do fluxo de trabalho geral de "editar propriedades de implantação" no novo Gerenciador de Servidores. O problema é que você só terá acesso a esse fluxo de trabalho se tiver a função Serviços de Área de Trabalho Remota instalada (até onde eu saiba).

Isso parece um pouco de descuido da parte da Microsoft. Como podemos configurar um certificado SSL personalizado para o RDP no Windows Server 2012 quando ele estiver em execução no modo de administração remota padrão, sem instalar desnecessariamente a função Serviços de Área de Trabalho Remota?

    
por Ryan Bolger 01.11.2012 / 08:15

3 respostas

79

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

  1. Abra a caixa de diálogo de propriedades do seu certificado e selecione a guia Detalhes
  2. Desloque-se para o campo Impressão digital e copie a cadeia hexadecimal delimitada por espaço para algo como o Bloco de notas
  3. 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.
  4. 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.

    
por 01.11.2012 / 08:15
4

Se você receber "Parâmetro Inválido" ao tentar a solução de Ryan, verifique se está usando um prompt de comando elevado (executado como administrador).

    
por 27.02.2018 / 22:32
0

Existe alguma maneira de o servidor impor o uso de um certificado de cliente válido? Parece que posso escolher, do cliente RDP, ignorar certificados inválidos. Eu quero que o cliente não consiga se conectar se o certificado for inválido.

    
por 25.04.2017 / 05:14