问题描述
为了将Windows服务器配置为Ansible主机,我尝试通过遵循https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html中提供的官方文档来设置WinRM。
在执行以下命令时,我陷入了“ Setup WinRM Listener”步骤,导致如下所述的错误:
PS C:\Users\Administrator> New-WSManInstance -ResourceURI "winrm/config/Listener" -SelectorSet $selector_set -ValueSet $value_set
New-WSManInstance : The WS-Management service cannot find the certificate that was requested.
At line:1 char:1
+ New-WSManInstance -ResourceURI "winrm/config/Listener" -SelectorSet $ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-WSManInstance],InvalidOperationException
+ FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.NewWSManInstanceCommand
以下是我的“ selector_set”和“ value_set”的值,这些值也根据文档进行了设置。
PS C:\Users\Administrator> $selector_set
Name Value
---- -----
Transport HTTPS
Address *
PS C:\Users\Administrator> $value_set
Name Value
---- -----
CertificateThumbprint E6CDAA82EEAF2ECE8546E05DB7F3E01AA47D76CE
操作系统:Windows Server 2012 R2
解决方法
这可能不是立即显而易见的,但是如果您重新阅读“ Setup WinRM Listener”步骤之前的本节的最后部分(添加了重点):
如果通过HTTPS侦听器运行,这是用于连接的Windows证书存储中的证书的指纹。要获取证书本身的详细信息,请在PowerShell中使用相关的证书指纹运行该命令 :
$thumbprint = "E6CDAA82EEAF2ECE8546E05DB7F3E01AA47D76CE" Get-ChildItem -Path cert:\LocalMachine\My -Recurse | Where-Object { $_.Thumbprint -eq $thumbprint } | Select-Object *
这说明E6CDAA82EEAF2ECE8546E05DB7F3E01AA47D76CE
只是一个例子-您需要提供颁发给计算机的实际证书的指纹。
要列出使用PowerShell在计算机证书存储中安装的所有现有证书,只需从示例命令中删除Where-Object
子句:
Get-ChildItem -Path cert:\LocalMachine\My -Recurse
如果没有安装适当的证书,则必须安装一个。如果在环境中配置了Active Directory证书服务或类似的PKI,则可以生成自签名证书,从CA供应商获取证书或从内部CA注册一个证书。