本文提供了一种解决方法,用于解决使用 GPO 分发的有效根 CA 证书显示为不受信任的问题。
原始 KB 编号: 4560600
现象
重要
不受信任的根证书颁发机构(CA)证书问题可能是由许多 PKI 配置问题引起的。 本文仅说明不受信任的根 CA 证书的可能原因之一。
使用证书和公钥基础结构(PKI)的各种应用程序可能会遇到间歇性问题,例如连接错误,每天/周出现一次或两次。 由于最终实体证书验证失败,因此会出现这些问题。 受影响的应用程序可能会返回不同的连接错误,但它们都会出现不受信任的根证书错误。 下面是此类错误的示例:
Hex | Decimal | 符号 | 文本版本 |
---|---|---|---|
0x800b0109 | -2146762487 | (CERT_E_UNTRUSTEDROOT) | 已处理的证书链,但在根证书中终止 |
使用 CryptoAPI 系统体系结构 的任何已启用 PKI 的应用程序都可能会因间歇性连接丢失或 PKI/证书相关功能故障而受到影响。 截至 2020 年 4 月,已知受此问题影响的应用程序列表包括但不限于:
- Citrix
- 远程桌面服务 (RDS)
- Skype
- Web 浏览器
管理员可以通过检查 CAPI2 日志来识别和排查不受信任的根 CA 证书问题。
专注于 CAPI2 日志中包含以下签名的生成链/验证链策略错误的故障排除工作。 例如:
错误 <DateTime> CAPI2 11 生成链
错误 <DateTime> CAPI2 30 验证链策略结果已处理证书链,但在不受信任提供程序信任的根证书中终止。
[value] 800b0109
原因
如果使用以下组策略(GP)分发根 CA 证书,则可能会出现不受信任的根 CA 证书问题:
计算机配置>Windows 设置>安全设置>公钥策略>受信任的根证书颁发机构
根本原因详细信息
使用 GPO 分发根 CA 证书时,将删除并再次写入其内容 HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates\Root\Certificates
。 此删除是按设计进行的,因为 GP 如何应用注册表更改。
为根 CA 证书保留的 Windows 注册表区域中的更改将通知 客户端应用程序的 Crypto API 组件 。 应用程序将开始与注册表更改同步。 同步是应用程序保持最新状态的方式,并了解最新的有效根 CA 证书列表。
在某些情况下,组策略处理需要更长的时间。 例如,许多根 CA 证书通过 GPO 分发(类似于许多 防火墙 或 Applocker
策略)。 在这些情况下,应用程序可能不会收到受信任的根 CA 证书的完整列表。
因此,链接到缺少根 CA 证书的结束实体证书将呈现为不受信任。 各种与证书相关的问题将开始出现。 此问题是间歇性的,可以通过重新启用 GPO 处理或重新启动来暂时解决。
如果使用替代方法发布根 CA 证书,则由于上述情况,可能会出现问题。
解决方法
Microsoft知道此问题,并且正在努力改进将来版本的 Windows 中的证书和加密 API 体验。
若要解决此问题,请避免使用 GPO 分发根 CA 证书。 它可能包括针对注册表位置(例如 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\SystemCertificates\Root\Certificates
)将根 CA 证书传送到客户端。
将根 CA 证书存储在不同的物理、根 CA 证书存储中时,应解决问题。
发布根 CA 证书的替代方法示例
方法 1: 使用命令行工具和 certutil
根存储在文件中 的 CA 证书rootca.cer:
certutil -addstore root c:\tmp\rootca.cer
注意
此命令只能由本地管理员执行,并且仅影响单台计算机。
方法 2:启动 certlm.msc(本地计算机的证书管理控制台),并在注册表物理存储中导入根 CA 证书。
注意
certlm.msc 控制台只能由本地管理员启动。 此外,导入将仅影响单台计算机。
方法 3:使用 GPO 首选项发布根 CA 证书,如组策略首选项中所述
若要发布根 CA 证书,请执行以下步骤:
使用
certutil -addstore root c:\tmp\rootca.cer
命令手动导入计算机上的根证书(请参阅方法 1)。在导入根证书的计算机上打开 GPMC.msc。
编辑想要使用以下方式部署注册表设置的 GPO:
- 编辑根证书的计算机 配置 > 组策略首选项 > Windows 设置 > 注册表 > 路径。
- 将根证书添加到 GPO,如以下屏幕截图所示。
将新的 GPO 部署到需要发布根证书的计算机。
将根 CA 证书写入位置 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates
来分发根 CA 证书的任何其他方法、工具或客户端管理解决方案都将正常工作。