【问题标题】:What do I have to do and how much does it cost to get a device driver for Windows Vista / 7 (32 and 64 bit) signed?为 Windows Vista / 7(32 位和 64 位)签名的设备驱动程序需要做什么以及需要多少费用?
【发布时间】:2011-02-13 22:57:27
【问题描述】:

我有一些基本上是LibUSB-Win32 的驱动程序,带有一个新的.inf 文件来描述产品/供应商ID 和描述我的硬件的字符串。这适用于 32 位窗口,但 64 位版本有问题;也就是说,微软在他们的智慧中要求所有驱动程序都进行数字签名。

所以我的问题是:

  1. 是否有我可以使用的已经签名的 LibUSB-Win32 驱动程序版本?
  2. 如果还没有一些我可以使用的已签名的,我必须做些什么才能让我的驱动程序签名。
  3. 我是否需要分别签署 64 位和 32 位版本,这会花费更多吗?
  4. this 是让他们签名的免费替代方案吗?
  5. 除了要求我的客户在每次启动机器时boot into test mode 之外,我还有其他选择吗(我不会考虑)。
  6. 除了 Verisign 之外,还有其他代码签名选项吗?显然,像OpenID 这样的免费/开源计划会很棒;-)

【问题讨论】:

    标签: windows-7 windows-vista 64-bit driver-signing


    【解决方案1】:

    手头有两个不同的问题:

    1. 对映像文件(即 driver.sys 文件)进行签名以满足内核模式代码签名 (KMCS)
    2. 签署驱动程序包以满足驱动程序安装(即 driver.cat 文件)。

    如果您采用由另一个实体签名的现有驱动程序(无论是 Microsoft 的 WinUSB 还是 libusb-win32),这将满足 KMCS。

    至于驱动程序安装,您需要自己的代码签名证书来签署 .cat 文件,该证书可验证您的 .inf 及其引用的文件(例如您的 .sys 文件)没有被修改并且真正来自你。这不是什么大问题,因为与 KMCS(阻止您的驱动程序加载)不同,它不会阻止您的驱动程序被安装,而只是向用户发出警告。

    代码签名证书(确保它支持 KMCS!)将花费您数百美元,具体取决于您选择的 CA。有些人可能有计划,允许您为每个签名活动付费,而不是每年在全球范围内付费。如果您不需要发布多个版本,这对您来说可能更便宜。

    【讨论】:

    • 从 Windows 8 开始,我认为 INF 文件也需要签名。在 Windows 8 之前,您是对的;可以发布使用 WinUSB 或 usbser.sys 的未签名驱动程序,并发出无法验证发布者的警告。
    • @DavidGrayson,INF 文件也必须在 Windows 7 上签名,只是不一定使用来自知名 CA 的 Authenticode 证书。这个政策有变化吗?你能指出我的任何 MSDN 文档或博客吗?
    • 抱歉,我没有 MSDN 文档可向您指出,但我有成功向数千名使用 XP/Vista/7 的客户提供完全未签名的驱动程序的经验。 Windows Vista/7 中这个对话框的存在也应该让你很信服:a.pololu-files.com/picture/…
    • 对对对。那么 Windows 8 对目录文件的期望是什么样的签名呢?
    • 参见 kmsigning.doc。它必须链接到受信任的根证书颁发机构中的证书。
    【解决方案2】:

    您也许可以尝试使用 libusb 的libusb-winusb 版本,该版本尝试围绕 winusb 驱动程序实现大部分现有功能(这是一个签名的 MS 二进制文件,因此您不需要自己做) .然而,作为 winusb 的 YMMV 并没有 100% 映射到 libusb 所需的所有功能。

    【讨论】:

      【解决方案3】:

      您可以使用忽略未签名驱动程序的this tutorial。我认为您不想付款,因为它要花费 400 美元!

      Here is an other tutorial

      您也可以以管理员身份运行 CMD 并运行以下命令:

      bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
      bcdedit.exe -set TESTSIGNING ON
      

      【讨论】:

      • 我绝对不会要求客户启动测试模式或禁用签名。首先,它会将“测试模式”标签放在他们的桌面上,这可能会造成混淆。其次,您将它们置于可以在其系统上加载未签名和可能不受信任的内核代码的位置。
      • 值得指出,bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS 在 Vista RTM 后不起作用。
      • 看来 bcdedit.exe -set TESTSIGNING ON 在 win7 x64 上也不起作用。
      【解决方案4】:

      根据我的研究,签署设备驱动程序的成本可能低至 266 美元。我的理解是只有公司才能让司机签字。他们不会为个人这样做。

      参考:CERTUM Code Signing Certificates

      【讨论】:

        猜你喜欢
        • 2012-12-01
        • 2015-05-30
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        • 2012-12-20
        • 1970-01-01
        • 2011-02-20
        相关资源
        最近更新 更多