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

52

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 o utilitário Configuração de Host da Sessão da Área de Trabalho Remota que lhe deu acesso à caixa de diálogo de propriedades RDP-Tcp que permite configurar um certificado personalizado para o RDSH usar. Em seu lugar, está uma nova e agradável GUI consolidada que faz parte do fluxo de trabalho geral "editar propriedades de implantação" no novo Gerenciador do Servidor. O problema é que você só terá acesso a esse fluxo de trabalho se tiver a função de Serviços de Área de Trabalho Remota instalada (pelo que sei).

Isso parece um pouco de supervisão da parte da Microsoft. Como podemos configurar um certificado SSL personalizado para o RDP no Windows Server 2012 quando ele é executado no modo de Administração Remota padrão sem instalar desnecessariamente a função de Serviços de Área de Trabalho Remota?

Ryan Bolger
fonte
Relacionado -> superuser.com/questions/1093159/…
FreeSoftwareServers

Respostas:

80

Acontece que muitos dos dados de configuração do RDSH são armazenados na Win32_TSGeneralSettingclasse WMI no root\cimv2\TerminalServicesespaç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 -Filteropção ao gcicomando 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

  1. Abra a caixa de diálogo de propriedades do seu certificado e selecione a guia Detalhes
  2. 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
  3. 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.
  4. 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.

Ryan Bolger
fonte
3
Só queria acrescentar que isso me salvou de um colapso puro. Obrigado. Instalar as funções e reiniciar os servidores, conforme sugerido no technet e similares, é ridículo. Mesmo assim, depois de instalar o certificado SSL no RD Gateway Manager, ele não será transferido para o login do administrador remoto.
Papa
2
Muito obrigado por isso. Eu devo ter pesquisado todo o google antes de encontrar isso. Há muitos resultados solicitando a instalação dos "Serviços de Área de Trabalho Remota" via "Adicionar funções e recursos", mas isso exige que você ingresse em um domínio.
Sethi 12/03
2
Se eu tentar fazer isso usando o seu script PS, recebo "Parâmetro inválido". Mesmo problema se eu fazê-lo manualmente, também ...
deed02392
11
Eu estava obtendo argumento inválido usando todos os métodos até reimportar o certificado, incluindo chaves privadas. Erro simples.
Toffitomek
2
Eu novamente: D Estou recebendo o erro "Parâmetro inválido" no PowerShell também ao executar wmic. Acabei de ver a nota na parte inferior. Verifique se o certificado também está na loja pessoal. O meu estava na loja de Hospedagem Web desta vez ...
Sethi 31/01
4

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

David Literak
fonte
Não posso acreditar que isso não tem voto positivo!
Adrian Godong
0

Você precisa da sua domain.pfx impressão digital em um arquivo txt SSLCertificateSHA1Hash.txt.

Em seguida, execute isso no 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
FreeSoftwareServers
fonte