Como fornecer um certificado de servidor verificado para conexões de área de trabalho remota (RDP) para o Windows 10

8

Temos uma máquina Windows 10 Pro em nosso escritório que tem uma porta aberta para a Internet para conexões de entrada de área de trabalho remota (um "host"). Ele é bem protegido por senha complexa e número limitado de tentativas permitidas e somente TLS 1.1 ou superior, mas não apresenta um certificado SSL verificado externamente, somente o certificado auto-gerado auto-assinado fornecido pelos Serviços de Área de Trabalho Remota. nos dá dois problemas:

  1. Não podemos estar totalmente confiantes quando nos conectamos remotamente, estamos realmente conectando a esta máquina e não alguma conexão seqüestrada.
  2. Nosso site falha na verificação de conformidade com o PCI-DSS 3.1 (necessária porque usamos uma máquina de cartão de débito / crédito para ponto de venda que se conecta via internet). A verificação relata erros fatais nessa porta de área de trabalho remota voltada para a Internet: 'Certificado auto-assinado SSL' e 'Certificado SSL com nome de host incorreto'.

Como obtenho uma máquina Windows 10 Pro (ou Windows 7/8 / 8.1 Pro) atuando como servidor / host para apresentar um certificado SSL apropriado para a verificação da Área de Trabalho Remota?

gogoud
fonte
1
Você pode colocar o certificado autoassinado no armazenamento de certificados de cada máquina que se conectará a essa máquina, dessa forma, somente esse certificado autoassinado é confiável. Você também pode obter o certificado assinado por uma CA e, por padrão, como a CA é confiável, o certificado que o host deseja usar será confiável. Você não poderá resolver seus problemas de conformidade com o PCI-DSS 3.1, a menos que obtenha um certificado assinado pela CA. Você deveria fazer isso.
Ramhound
Obrigado @Ramhound, você está certo, eu preciso de um certificado assinado pela CA - agora tenho um.
gogoud

Respostas:

12

Você pode configurar essa máquina host para usar e apresentar seu certificado SSL (existente, adquirido) com verificação externa (instruções provavelmente também funcionam para o Windows 8 e 8.1, podem ou não funcionar para o Windows 7) (partes disso com base em um Microsoft KB 2001849 ):

Primeiro, você precisa ter comprado um certificado SSL genuíno verificado.

Se você tiver esse certificado no arquivo de formato pkcs12 (por exemplo, extensão pfx), poderá visualizar a impressão digital SHA1 usando o Linux ou o Cygwin (você precisará dela abaixo):

openssl pkcs12 -in mysite.pfx -nodes|openssl x509 -noout -fingerprint

Como alternativa, se você tiver os arquivos de certificado individuais em seu servidor Linux em / etc / ssl (/etc/ssl/certs/mysite.crt, /etc/ssl/mysite.ca-bundle e /etc/ssl/private/mysite.key ) você pode criar um arquivo pfx e obter a impressão digital SHA1 da seguinte forma:

  1. Crie um arquivo pfx para o seu certificado, se você ainda não tiver um (aqui: meusite.pfx) - defina uma boa senha quando solicitado: sudo openssl pkcs12 -export -out mysite.pfx -inkey /etc/ssl/private/mysite.pem -em /etc/ssl/certs/mysite.crt -certfile /etc/ssl/mysite.ca-bundle
  2. Mova ou copie esse arquivo pfx conforme necessário para que seja acessível pela máquina host do Windows.
  3. Veja a impressão digital SHA1 da chave (você precisará disso abaixo): openssl x509 -in /etc/ssl/certs/mysite.crt -noout -fingerprint

Importe o arquivo de formato pkcs12 (por exemplo, pfx) para o armazenamento de certificados pessoais da máquina host do Windows:

  1. Iniciar / Executar / mmc
  2. Arquivo / Adicionar Remover Snap-in / Certificados / Adicionar / Conta de Computador / Computador Local / OK
  3. Na janela à esquerda, clique com o botão direito do mouse em Certificados (Computador local) / Pessoal, escolha Todas as tarefas / Importar…
  4. Localize o arquivo pfx e importe-o, sugiro que, por motivos de segurança, você não o torne exportável.
  5. Ao expandir seus dados pessoais / certificados, você deve ver agora três certificados, um dos quais é o certificado do seu site (por exemplo, mysite.com). Clique com o botão direito do mouse neste certificado de site e clique com o botão direito do mouse, escolha Todas as tarefas / Gerenciar chaves particulares…
  6. Adicionar usuário "SERVIÇO DE REDE" somente com permissão de Leitura (não Controle Total) e, em seguida, Aplicar
  7. Fechar mmc

Use o regedit para adicionar um novo valor binário chamado SSLCertificateSHA1Hash em HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp. O valor necessário é a impressão digital SHA1 do certificado obtido acima: clique com o botão direito do mouse no novo valor, escolha Modificar e digite os códigos hexadecimais sequencialmente (sem vírgula, espaço ou vírgula, letras não diferenciam maiúsculas de minúsculas) - existem 20 pares hexadecimais ao todo (40 caracteres).

Talvez seja necessário reinicializar a máquina host ou reiniciar os Serviços de Área de Trabalho Remota (em Services.msc) antes que funcione.

Agora, depois de fazer uma conexão de área de trabalho remota para este host usando o nome do site correto (por exemplo, mysite.com) você verá um cadeado fechado no lado esquerdo da barra de conexão superior: clicar neste mostra que a identidade do controle remoto computador foi verificado. Uma porta que está aberta da Internet para esse host agora deve passar pelo teste de nome de host do PCI-DSS 3.1.

gogoud
fonte
Muito obrigado. Eu uso essas etapas exatas nas minhas máquinas e funciona bem.
Peter Berbec
Obrigado! Trabalhei perfeitamente na minha máquina pro win10!
NSV
4

Aqui estão os passos básicos que uso:

Obtenha um certificado válido para o host (ele não precisa vir de uma CA externa, mas todas as suas máquinas precisam confiar nele). Certifique-se de que tenha o nome de host correto, eu tive problemas com certificados curinga.

Instale o certificado no host, como:

certutil.exe -p myPassword -importPFX c:\mycert.pfx noExport

encontre a impressão digital do certificado, na interface do usuário ou no PowerShell:

$tp = (ls Cert:\LocalMachine\my | WHERE {$_.Subject -match "something unique in your certs subject field" } | Select -First 1).Thumbprint

agora diga ao Remote Desktop para usar esse certificado:

& wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="$tp" 

não é necessário reiniciar

Peter Hahndorf
fonte