7

我分发了一个 Windows 桌面应用程序,其中包含由 Verisign Class 3 代码签名证书数字签名的所有可执行文件。对于绝大多数用户来说,这似乎工作正常。

然而,少数用户报告证书无效。他们说它会出现消息“已处理证书链,但在信任提供者不信任的根证书中终止”。这对应于错误代码CERT_E_UNTRUSTEDROOT (0x800B0109)。这也已在完全更新的 Windows 7 机器上报告。所以大概我的证书没问题,但 Windows 有时不信任 VeriSign 证书。

为什么 Windows 有时不信任 VeriSign?有什么我可以添加到我的安装程序(也签名)中来告诉 Windows 信任证书的吗?

4

1 回答 1

8

微软通过 Windows 更新推出的根证书经常更新,但这些更新被标记为“可选更新”。因此,并非所有用户都安装了它们,并且可能需要手动安装它们。这也适用于“完全更新”的机器,因为自动安装通常设置为仅安装“重要更新”,而根证书更新不是。

根据桌面应用程序的类型,您在签名时也可能必须遵循某些规则。例如,与 Windows 安全中心交互的应用程序需要与驱动程序基本相同的签名方法。也就是说,证书链与签名一起嵌入(/ac切换到signtool)。您可以在此处MSCV-VSClass3.cer获取适用于 VeriSign 的证书。

这个过程通常被称为交叉签名,这似乎是用词不当。虽然这是让您的驱动程序二进制文件或目录交叉签名的一个步骤,但至关重要的一步是 Microsoft 对驱动程序(或者现在更常见的目录文件)进行签名,这是实际的交叉签名。

于 2012-11-15T16:16:19.743 回答