Eu tenho uma VM do Azure onde a comunicação remota do PowerShell está habilitada e o WinRM tem o ouvinte HTTPS configurado para usar um certificado autoassinado. Posso iniciar alguns comandos na VM de outra máquina do outro lado da Internet usando o PowerShell:
$cred = Get-Credential
$option = New-PSSessionOption -SkipCACheck
$psSession = New-PSSession -UseSSL -ComputerName $vmHostName -SessionOption $option -Credential $cred
Invoke-Command -Session $psSession -ScriptBlock { Write-Host $env:COMPUTERNAME }
Eu li como o WinRM funciona do ponto de vista da segurança . A conexão com a VM é protegida de invasores passivos (confidencialidade) e até mesmo de alguns ativos (integridade). Ainda assim, falta proteção contra MitM (autenticidade) devido ao desconhecimento da CA que assinou o certificado.
Tentei encontrar uma opção para fixar a impressão digital do certificado no lado do cliente, mas encontrei apenas o arquivo -SkipCACheck
. Que eu saiba, winrs
não tem nem tanto. Estou pensando em instalar o certificado autoassinado em Cert:\LocalMachine\Root na máquina cliente para torná-lo confiável, mas isso pode ser mais difícil para os agentes DevOps Server da minha empresa, que não são gerenciados por minha equipe e são compartilhados com outras equipes.
Vejo tutoriais usando certificados autoassinados e em -SkipCACheck
todos os lugares. Existem apenas alguns que não usam um certificado autoassinado . Eu me pergunto por que uma configuração tão insegura é demonstrada sem aviso e dicas sobre como protegê-la. Mesmo aqui no Server Fault, minha confusão não é única .
Como devo proceder quando preciso me conectar à VM pela Internet pública? Existe uma maneira segura de usar um certificado autoassinado com WinRM? Existe uma maneira simples de obter um certificado confiável para o lister WinRM na máquina?
Basta usar um certificado confiável em vez do autoassinado.
Usar o protocolo ACME com uma das CAs gratuitas (Let's Encrypt, ZeroSSL, Buypass Go SSL) é simples e seguro. WinACME é um cliente ACME para Windows, simples de configurar e que possui tudo o que é necessário para configurar e manter o certificado.
Como etapa de instalação do certificado no WinACME, ou seja, a etapa que é executada após a emissão/renovação do certificado, utilize o script plugin com
Scripts\ImportWinRM.ps1
no diretório onde o WinACME está instalado e passe{CertThumbprint}
(literalmente) como sua lista de parâmetros. O roteiro:Depois que o ouvinte WinRM usar o certificado confiável, não se esqueça de colocá-lo
-SkipCACheck
no cliente.