简短的介绍:我有一个通过 SignTool 验证的签名驱动程序,但 Windows 拒绝加载它并出现错误:CodeIntegrity 3004 - 在系统上找不到文件哈希。我该如何解决?
详细描述:
我正在使用 Cypress Suite USB 3.4.7 开发套件来创建 USB 驱动程序,以便我们的仪器在 Windows 7 64 位下运行。我已经使用正确的 ID 配置了 INF,并且只要我绕过驱动程序签名强制,未签名的驱动程序就可以正常工作。我想创建一个签名的驱动程序,并且一直遵循中描述的步骤http://www.davidegrayson.com/signing/ http://www.davidegrayson.com/signing/
我使用 Inf2Cat v3.2 和 /os:7_X64 标志创建了一个目录文件。我正在使用 SignTool /sha1 进行签名,并且可以验证 .cat 和 cyusb.sys 文件上的签名。文件资源管理器显示这两个文件都有数字签名,并且高级选项卡显示“此数字签名正常”。
我插入 USB 设备,它在设备管理器中显示为未知设备。我选择更新驱动程序,然后看到一个屏幕,表明该驱动程序已由我签名。我继续,过了一会儿安装失败,表明驱动程序未正确签名。事件查看器显示 CodeIntegrity 错误 3004,“Windows 无法验证 CYUSB.sys 的映像完整性,因为在系统上找不到文件哈希”
我一直无法找到这个无法找到的“文件哈希”的解释。任何有关如何进一步排除故障并解决此问题的帮助将不胜感激!
事件日志中的错误消息具有误导性。丢失的“文件哈希”实际上是 Microsoft 根级证书。我的驱动程序由 GlobalSign ObjectSign CA 签名,这是一个有效的签名,但我没有指定将 GlobalSign 链接到 Microsoft 根证书的交叉证书。
为了清楚地检测到原始错误,我需要使用带有 /kp 开关的 SignTool 验证来测试此 USB 驱动程序所需的内核级权限。使用该开关时,我收到一个错误,明确指出找不到 Microsoft 根证书。
我在这里下载了 GlobalSign 的交叉证书:http://msdn.microsoft.com/en-us/library/windows/hardware/dn170454(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/hardware/dn170454(v=vs.85).aspx
使用 /ac 开关和 SignTool Sign 我能够使用一直到 Microsoft 根证书的链对 .cat 文件进行签名。该驱动程序已成功安装在Win 7 64位系统上。胜利!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)