我对如何为本地主机配置证书有点困惑。我的场景是这样的:
我们有两台 Windows 2012 服务器(未加入域),我需要从一台机器远程执行 powershell 脚本。这必须使用另一台机器的 IP 来完成。我尝试了一下,最终知道使用 IP 时协议应该是 HTTPS,并且需要服务器证书。
阅读了这么多博客和帖子让我感到困惑,在两台服务器上使用 powershell 时,我都安装了使用 powershell 创建的自签名证书。证书名为 computername.workgroup,位于本地计算机证书存储中的 Personal 中。
但当我尝试winrm qc-传输:https无法在 HTTPS 上创建 WinRM 侦听器,因为此计算机没有适当的证书。
有人能尽快帮助我吗?如何通过创建所需的证书来解决此错误?任何帮助都将不胜感激。
答案1
从https://support.microsoft.com/en-us/kb/2019527:
配置 WinRM 为 HTTPS 的目的是加密通过网络发送的数据。
WinRM HTTPS 需要本地计算机“服务器身份验证”证书,其 CN 与主机名匹配,且未过期、未撤销或未自签名。
所以你需要安装一个有效的首先在机器上安装证书。这意味着它需要来自认证机构。不是自签名的。这可能是您组织内部的 CA,也可能是全球 CA,如 Godaddy 或 Cybertrust 等。
这也意味着使用机器的 IP 地址而不是其名称将不是工作,除非您可以获得以机器的 IP 地址作为主题备用名称 (SAN) 的证书。
答案2
使用自签名证书进行 WinRM https 没有问题,但当连接到该计算机的端点时,您需要指定 (winRM) 客户端应跳过证书检查。您可以使用以下方式执行此操作:
$options = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
然后像这样设置会话:
$session = New-PSSession -UseSSL -SessionOption $options
我猜测您尝试使用的证书不包含私钥,这应该是该证书的唯一要求。