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?