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


Temos uma máquina Windows 10 Pro em nosso escritório que possui 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, apenas 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 nesta porta de área de trabalho remota voltada para a Internet: 'Certificado Auto-assinado SSL' e 'Certificado SSL com Nome de Host Errado'.

Como obtenho uma máquina com 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?


4


origem


Você pode colocar o certificado autoassinado no armazenamento de certificados de cada máquina que se conectará a essa máquina, dessa forma, apenas esse certificado autoassinado é confiável. Você também pode obter o certificado assinado por uma CA e, por padrão, porque 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:


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 este 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 uma impressão digital SHA1 assim:

  1. Crie um arquivo pfx para 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 / Certficates / 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. Expandindo seus dados pessoais / certificados, você deve ver agora 3 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 a esse 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 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.


8



Muito obrigado. Eu uso essas etapas exatas nas minhas máquinas e funciona bem. - Peter Berbec


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 do 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


3