为啥我的根证书不受信任?

Posted

技术标签:

【中文标题】为啥我的根证书不受信任?【英文标题】:Why's My Root Certificate Not Trusted?为什么我的根证书不受信任? 【发布时间】:2012-06-29 02:44:32 【问题描述】:

我已从证书服务器为自己颁发了代码签名证书。我还为自己颁发了来自同一证书服务器的根证书。 根证书存在于 Trusted Root Certification Authorities 文件夹中的当前用户和本地计算机证书存储中。我已经成功使用 signtool.exe 向导签署了一个 DLL:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe" signwizard <MyDLLName>.dll

但是,当我尝试验证我的 DLL 时,验证失败并出现以下错误:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe" verify <MyDLLName>.dll
SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
SignTool Error: File not valid: <MyDLLName>.dll

为什么会这样?我认为在 Trusted Root Certification Authorities 文件夹中拥有根证书可以验证 DLL。

【问题讨论】:

【参考方案1】:

在您的 verify 命令中添加 /pa 选项以告诉它使用默认身份验证验证策略而不是 Windows 驱动程序验证策略,这意味着它将查看您的证书存储而不是 Microsoft 信任驱动程序的有限 CA 集.

在这里查看更多选项: http://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.90).aspx

【讨论】:

嗨 Kevin,我正在尝试调用由自签名 SSL 证书托管的 WCF 服务,是否可以使用上述选项在本地安装 SSL?你能发送完整的命令来使用。我有 .pfx 和 .cer 文件,但 ASP.net 无法信任 SSL 提供程序。 @SanjayZalke 您可以使用 Windows 证书管理工具将证书安装在本地计算机的 Trusted Root CAs 文件夹中。您可以通过 mmc.exe 启动它并添加证书管理单元。 这里需要注意的是,如果您使用内核驱动程序 (.sys) 执行此操作,这将不起作用,因为内核驱动程序最终必须受到 Microsoft 根证书的信任。如果您添加提到的 /pa 选项,验证本身将通过,但驱动程序实际上不会加载,它仍然会显示未签名驱动程序错误。在启动期间,内核无法访问完整的证书存储区,因此它只能查看有限的 CA 与驱动程序的 Microsoft 信任集。

以上是关于为啥我的根证书不受信任?的主要内容,如果未能解决你的问题,请参考以下文章

安装.Net Framework 4.7.2时出现“不受信任提供程序信任的根证书中终止”的解决方法

Win软件 - (Net-Framework)已处理证书链,但是在不受信任提供程序信任的根证书中终止

证书服务重装后,没法启动,提示:“已处理证书链,但是在不受信任提供程序信任的根证书中终止

. net framework 4.7安装未成功,提示已处理证书链,但是在不受信任程序信任的根证书?

如何将SSL证书设置成受信任的证书

解决Charles抓包ssl证书信任问题