winrm https连接失败时,证书问题是最常见原因。需依次检查证书是否过期、主题名是否匹配访问地址、是否被系统信任(含完整信任链)、winrm监听器是否绑定正确证书指纹,并可临时绕过验证辅助定位问题。
直接检查证书有效性与信任链是最高效的方式。winrm https(5986端口)连接失败时,若提示“证书过期”“无法建立信任关系”或客户端报错 the underlying connection was closed: could not establish trust relationship,问题基本锁定在证书环节。
查看本地证书是否过期或无效
在目标服务器上以管理员身份运行 PowerShell:
- 列出所有个人证书库中、用于服务器身份验证的证书:
Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.EnhancedKeyUsageList.FriendlyName -contains "Server Authentication" } | Select-Object Subject, Thumbprint, NotBefore, NotAfter, Issuer - 快速筛选已过期的证书:
Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.NotAfter -lt (Get-Date) -and $_.EnhancedKeyUsageList.FriendlyName -contains "Server Authentication" } - 确认证书主题名(Subject 或 SAN)是否与客户端访问地址完全一致,例如访问
server01.contoso.com,证书的 CN 或 DNS Name 必须含该 FQDN。
验证证书是否被系统信任
即使证书未过期,若不在“受信任的根证书颁发机构”存储中,HTTPS 连接仍会失败:
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
- 检查证书链是否完整:双击证书 → “证书路径”选项卡 → 查看是否有红色叉号;若有,说明中间证书缺失或根证书未安装。
- 手动导入缺失的根或中间证书到
Cert:\LocalMachine\Root或Cert:\LocalMachine\CA存储(需管理员权限)。 - 使用命令行验证信任状态:
certutil -verify -urlfetch(需替换为实际 Thumbprint),该命令会尝试下载 CRL 并校验整个链。
确认 WinRM 是否真正绑定了该证书
证书存在 ≠ WinRM 正在用它。必须验证监听器配置:
- 运行
winrm enumerate winrm/config/listener,确认输出中 HTTPS 监听器的CertificateThumbprint字段值,是否与你选中的有效证书指纹完全一致。 - 若指纹为空或不匹配,需重新绑定:
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="server01.contoso.com"; CertificateThumbprint="A1B2C3..."} - 绑定后重启 WinRM:
Restart-Service WinRM
客户端侧绕过验证仅用于临时诊断
生产环境严禁长期使用,但排查时可快速验证是否纯属证书信任问题:
- PowerShell 中临时忽略证书错误(仅当前会话):
$sessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheckEnter-PSSession -ComputerName server01.contoso.com -UseSSL -SessionOption $sessionOption - 若此时连接成功,即可断定是证书信任、主机名或吊销状态问题,而非网络或服务故障。










