Windows 10:设备管理器中的错误代码52在交叉签名的驱动程序中具有正确的签名

时间:2018-10-12 11:51:53

标签: windows windows-10 driver device-manager driver-signing

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

  

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

Setupapi.dev.log显示此错误:

  

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

但是Setupapi.dev.log中的此消息也出现在正常安装中。

签名工具显示签名有效,与Windows资源管理器中的属性页相同。

此行为的原因是什么?

1 个答案:

答案 0 :(得分:2)

对此的潜在解决方案是not dual signing the cat filechecking the root certs of the customer's pcs。我还了解到setupapi.dev.log is perfectly normal

中的错误消息

经过大量有关微软文档的相互矛盾的研究之后,我终于找到了 https://docs.microsoft.com/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-later-说:

  

”注意:从Windows 10版本1607开始,Windows将不会加载任何未由Dev Portal签名的新内核模式驱动程序。

     

[...]

     

如果满足以下任一条件,仍允许使用交叉签名的驱动程序:

     

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

     

BIOS中的安全启动已关闭。

     

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

事实证明,没有在我们的测试机上启用安全启动,但是在有问题的客户计算机上启用了安全启动。

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