我有一个 Azure VM,其中启用了 PowerShell 远程处理,并且 WinRM 将 HTTPS 侦听器配置为使用自签名证书。我可以使用 PowerShell 从 Internet 另一端的另一台计算机在 VM 上启动一些命令:
$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 }
我从安全角度阅读了 WinRM 的工作原理。与虚拟机的连接受到保护,免受被动攻击者(机密性)甚至一些主动攻击者(完整性)的攻击。尽管如此,由于忽略了签署证书的 CA,因此缺少针对 MitM(真实性)的保护。
我试图找到一个选项来将证书的指纹固定在客户端,但我发现只是-SkipCACheck
. 据我所知,winrs
甚至没有那么多。我正在考虑在客户端计算机上的 Cert:\LocalMachine\Root 中安装自签名证书,以使其受信任,但这对我公司的 DevOps 服务器代理来说可能会更困难,这些代理不由我的团队管理,而是与其他团队共享。
我到处-SkipCACheck
都 看到使用自签名证书的教程。只有少数不使用自签名证书。我想知道为什么在没有警告和提示的情况下演示这种不安全的设置。即使在服务器故障上,我的困惑也不是独一无二的。
当我需要通过公共互联网连接到虚拟机时,我应该如何操作?有没有一种安全的方法可以在 WinRM 中使用自签名证书?有没有一种简单的方法可以为计算机上的 WinRM 列表器获取受信任的证书?