这种错误通常意味着 WinRM 服务无法对提供的证书验证用户凭证.根本原因通常涉及以下问题之一:
- Mismatched Principal Name : 证书中的主体或主体替代名称 (SAN) 与您正在映射的活目录用户帐户或本地帐户不匹配.
- Untrusted Root Certificate :本地机器或域控制器不信任发出用户证书的证书权威机构 (CA).
- Missing Client Authentication Extended Key Usage (EKU) :该证书缺乏远程管理用户身份验证所需的特定数字签名目的.
- Account Permissions :用户帐户缺乏远程登录或映射证书所需的权限.
逐步修复问题
按照下列方法来解决问题.
方法1:验证和重新进口根认证机构 (CA)
WinRM 需要一个完整的信任链来验证用户凭证.如果根证书在信任根存储中缺失,身份验证失败.
- 按下 Windows Key + R, 类型
certlm.msc,然后按下 Enter 打开本地计算机证书管理器. - 导航到 Trusted Root Certification Authorities 没有. Certificates.
- 检查是否列出了发出您 WinRM 证书的 CA 证书.
- 如果没有,请右键键击. Certificates 选择 All Tasks 然后点击 Import.
- 点击 Next,浏览您的CA根证书文件,并完成向导将其放在 Trusted Root Certification Authorities 在商店.
方法2:检查证书EKU字段
用于映射的证书必须明确支持客户端认证.
- 按下 Windows Key + R, 类型
certmgr.msc,然后按下 Enter 打开当前用户证书管理器. - 找到您试图用于 WinRM 映射的特定证书.
- 双击证书并导航到 Details 这里是我的房间.
- 向下滚动,点击 Enhanced Key Usage (EKU) 这里是场地.
- 确保这一点. Client Authentication (1.3.6.1.5.5.7.3.2) 在描述框中明确列出.如果它缺失,您必须在启用此扩展时请求新的证书.
方法3:为本地帐户配置UAC远程限制
如果您正在映射一个本地管理员帐户而不是一个域帐户,Windows用户帐户控制 (UAC) 可能会阻止远程循环的凭证验证.
- 按下 Windows Key + R, 类型
regedit,然后按下 Enter 打开注册表编辑器. - 导航到下面的注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System - 在右边窗口中右键单击一个空白空间,选择 New 然后点击 DWORD (32-bit) Value.
- 准确命名新值:
LocalAccountTokenFilterPolicy - 双击
LocalAccountTokenFilterPolicy并且改变了 Value data 从0为了1. - 点击 OK 并重新启动您的计算机,以适用政策更改.
方法 4: 纠正 WinRM 映射命令语法
在 PowerShell 映射命令配置过程中,主题,发行人或指纹属性中经常出现错误.
- 按下右键 Start Menu 并且选择 Terminal (Admin) 或是 PowerShell (Admin).
- 使用此命令直接从您的证书中提取正确的发行人指纹和主体信息:
Get-ChildItem Cert:\LocalMachine\My - 使用明确变量运行映射命令以避免格式化问题. 用实际值替换占位符:
New-Item -Path WSMan:\localhost\Service\Cardmgmt\CertMapping -CountInfo @{Subject="CN=YourUserName";Issuer="YourIssuerThumbprint";UserName="YourDomain\YourUserName";Password="YourPassword"} - If you prefer to map without hardcoding the password, ensure your active command explicitly specifies the URI using the
-Target参数与步骤2中找到的精确主题字符串相匹配.
方法5:重新启动 WinRM 服务
在进行证书和注册表调整后,通过重新启动管理服务清洗活跃配置.
- 打开 PowerShell (Admin).
- 执行下面的命令重新启动服务:
Restart-Service WinRM - 通过检查其状态来验证服务是否正确运行:
Get-Service WinRM
可能有一些错误.. Learn Microsoft