适用于 64 位 Windows 7 的廉价 Windows 驱动程序签名

Posted

技术标签:

【中文标题】适用于 64 位 Windows 7 的廉价 Windows 驱动程序签名【英文标题】:Cheap Windows driver signing for 64 bit Windows 7 【发布时间】:2011-02-20 06:57:11 【问题描述】:

我需要在 Windows 7 64 位机器上安装 libusb-win32 驱动程序。这个驱动程序是开源的,所以它没有数字签名,所以我想自己做这个,但我想知道这是否可以在不花很多钱的情况下完成。是否可以使用未经Verisign 或GlobalSign 签名的证书?也许是自签名或使用StartSSL 代替?

如果是,我该怎么做?根据how-to,The Practical Truth About x64 Kernel Driver Signing,我必须使用“交叉证书”(Microsoft 列表中只有六个可用,其中大部分用于不再适用的 CA活跃)。

我不在乎用户是否会收到警告消息。如果用户必须先安装一个特殊的CA 证书,我什至可以接受。我只要求驱动程序运行时无需在每次 Windows 启动时手动禁用签名检查。

【问题讨论】:

【参考方案1】:

要允许加载到内核中,您必须与那些 CA 签署并检查 WHDL。

唯一的选择是使用user mode driver framework。 (但libusb 不支持它——讨论过,但从未实现)

【讨论】:

您能解释一下“WHDL 检查”是什么意思吗? 驱动程序无需通过 WHQL 即可加载到 x64 Windows 上,只需签名即可。【参考方案2】:

不,驱动程序必须由这些特定证书之一交叉签名,因此驱动程序必须由这些 CA 之一签名。您可以在机器上禁用驱动程序签名以进行测试,但显然您不想在生产机器上执行此操作。对不起,就是这样。

【讨论】:

而且没有办法注入自定义 CA 证书,所以 Windows 接受由这个自定义 CA 签名的驱动程序? 不,驱动程序需要使用 Microsoft 提供的证书之一进行交叉签名。您可以添加自己的 CA 证书,但如果没有匹配的交叉签名证书,它对您没有帮助;只有 Microsoft 可以生成交叉签名证书。 Microsoft 的根 CA(通过交叉证书将证书连接到该 CA)已深入内核;它与证书存储无关。虽然您可以通过将根证书安装到证书存储中来解决 SetupAPI 的驱动程序信任排名,但这与 KMCS 无关。【参考方案3】:

LibUSB_win32 现在已经签名,根据http://sourceforge.net/apps/trac/libusb-win32/wiki

它说:“Vista/7/2008/2008R2 64 位从版本 1.2.0.0 开始支持,因为 Microsoft KMCS 接受的数字签名嵌入在内核驱动程序 libusb0.sys 中。”

所以您唯一需要做的就是更新您的 libusb_win32 驱动程序。

【讨论】:

以上是关于适用于 64 位 Windows 7 的廉价 Windows 驱动程序签名的主要内容,如果未能解决你的问题,请参考以下文章

VBS 脚本适用于 XP 32 位但不适用于 7 64 位

适用于Windows Vista的最佳Subversion客户端(64位)[关闭]

Windows 64 位系统下 Python 环境的搭建

适用于 Windows 7 32 位系统的 Java 11 JDK

Windows Phone 应用程序仅适用于 Windows Phone 7?

我无法安装/启动适用于 Windows 7 64 位的 Android Studio [重复]