【发布时间】:2013-12-13 14:44:06
【问题描述】:
在开发 64 位驱动程序时,我们了解到每个驱动程序都需要经过正确的数字签名才能安装(测试模式除外)。
最近,我们偶然发现了一个驱动程序(用于 USB 摄像头),该驱动程序似乎缺少有效签名。在安装过程中,我们收到关于未签名驱动程序的红色警告屏幕,但设备使用此驱动程序可以正常工作。
我拍了照片。 抱歉,图片墙,我害怕错过重要的一点,因为我显然不明白这里发生了什么。
开发经理
驱动程序属性
司机详情
来自 %system32%\DriverStore\FileRepository 的驱动程序文件
证书详情
为此关闭了测试模式(我们自己的驱动程序正确加载失败)。
他们是怎么做到的?为什么 Windows 会加载此驱动程序?我将不胜感激解释此行为的文档中的一些链接。
编辑:
使用 cmets 中建议的详细 CodeIntegrity 日志,我没有发现任何问题。日志显示一行
代码完整性在 oem132.cat 中找到文件的文件哈希
此文件存在于 %system32%\catroot\some-guid 中,与上面截图中的 cat 文件相同;包括过期的证书。
signtool verify /v /c .\mvBlueFOX_amd64.cat .\mvBlueFOX2.sys 给了
Verifying: .\mvBlueFOX2.sys
File is signed in catalog: .\mvBlueFOX_amd64.cat
Hash of file (sha1): 19E6125B9C5F31E21EDA5DBAA5F77798F8E394C4
Signing Certificate Chain:
Issued to: Class 3 Public Primary Certification Authority
Issued by: Class 3 Public Primary Certification Authority
Expires: Thu Aug 03 00:59:59 2028
SHA1 hash: A1DB6393916F17E4185509400415C70240B0AE6B
Issued to: VeriSign Class 3 Code Signing 2009-2 CA
Issued by: Class 3 Public Primary Certification Authority
Expires: Tue May 21 00:59:59 2019
SHA1 hash: 12D4872BC3EF019E7E0B6F132480AE29DB5B1CA3
Issued to: MATRIX VISION GmbH
Issued by: VeriSign Class 3 Code Signing 2009-2 CA
Expires: Tue May 07 00:59:59 2013
SHA1 hash: 75859F3121E3852E2894E1A7B388CB9E68EBC237
File is not timestamped.
SignTool Error: A certificate chain processed, but terminated in a root
certificate which is not trusted by the trust provider.
Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
【问题讨论】:
-
您是否查看了允许未签名驱动程序永久运行的选项?例如 bcedit 中的 DDISABLE_INTEGRITY_CHECKS?
-
IIRC,用于代码签名时不考虑证书的到期日期。因此,如果签名的唯一问题是证书已过期,那么您描述的行为就是预期的。 (不过,设备管理器应该将驱动程序显示为已签名;我不确定那里发生了什么。猜测目录上的签名有问题。)
-
不确定,但问题末尾的文本“已处理证书链,但在信任提供者不信任的根证书中终止。”表明该特定计算机上的根证书可能有问题。可能需要更新根证书或根证书存储已损坏?
-
@PMF:尽管使用过期证书进行签名,但该驱动程序在多台 64 位计算机上安装和运行良好。我不认为损坏的证书存储是造成这种情况的原因。
-
我认为 signtool 输出回答了这个问题。 mvBlueFOX2.sys 不是“未签名”或“测试签名”。它使用系统不喜欢的证书链进行签名,但不足以在加载时拒绝驱动程序。证书链检查结果有很多参数,操作系统的不同部分可能对它们有不同的解释。因此,如果您可以使用类似的证书链为您的驱动程序签名,您可能会得到相同的结果(驱动程序已加载警告。)
标签: windows certificate 64-bit driver