2

我们开发了一个驱动程序,并使用我们公司的 Verisign 签名(SHA1 + SHA256,包括证书链)对 cat 和 sys 文件进行了签名。我们在 32 位和 64 位版本的 Windows 7 和 10 下对其进行了测试。现在我们有一些随机客户报告说我们的设备在设备管理器中无法正确识别,并且出现错误 52:

Windows 无法验证此设备所需驱动程序的数字签名。最近的硬件或软件更改可能安装了签名不正确或损坏的文件,或者可能是来自未知来源的恶意软件。(代码 52)

Setupapi.dev.log 显示此错误:

_!!! dvi:设备未启动:设备有问题:0x34 (CM_PROB_UNSIGNED_DRIVER),问题状态:0xc0000428

但是 Setupapi.dev.log 中的这条消息也出现在工作安装中。

签名工具显示签名有效,windows资源管理器的属性页也是如此。

这种行为的原因是什么?

4

1 回答 1

4

对此的潜在解决方案不是双重签署 cat 文件检查客户 pcs 的根证书。我还了解到 setupapi.dev.log 中的错误消息是完全正常的

在对大量明显相互矛盾的微软文档进行了一些研究之后,我终于登陆了 https://docs.microsoft.com/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-后来-它说:

“注意:从 Windows 10 版本 1607 开始,Windows 将不会加载任何未经开发门户签名的新内核模式驱动程序。

[...]

如果满足以下任何一项,则仍然允许交叉签名的驱动程序:

电脑已从早期版本的 Windows 升级到 Windows 10 版本 1607。

安全启动在 BIOS 中已关闭。

驱动程序使用 2015 年 7 月 29 日之前颁发的最终实体证书进行签名,该证书链接到受支持的交叉签名 CA。”

事实证明,我们没有在任何一台测试机器上启用安全启动,而是在有问题的客户机器上启用了安全启动。

现在我们必须对驱动程序执行 WHQL 认证。幸运的是,有些公司提供此服务,因此我们不必维护认证机器池。

于 2018-10-12T11:51:53.237 回答