【问题标题】:Sign Windows x64 Driver - The system cannot find the file specified签署 Windows x64 驱动程序 - 系统找不到指定的文件
【发布时间】:2018-07-14 03:51:19
【问题描述】:

我有包含 2 个证书(未导出私钥)的 SafeNet 令牌,一个是 sha256 EV 代码证书,另一个是 sha1 EV 代码证书。

我使用 signtool 签署了我的驱动程序:

Signtool sign /v /s my /n "my_company" /sha1 my_sha256_hash /t http://timestamp.verisign.com/scripts/timestamp.dllmydriver.sys

当我尝试加载驱动程序时,我得到一个错误说系统找不到指定的文件,我用Depends查看驱动程序,一切正常。

当我运行 signtool verify mydriver.sys 时,出现以下错误: SignTool 错误:已处理证书链,但在信任提供者不信任的根证书中终止。

我也尝试使用关联的二进制文件对我的 cat 文件进行签名,但仍然没有成功。

我读到有一个名为 WHQL 的程序,最终微软会为我提供我的“良好”签名驱动程序,它仅用于 Windows 更新分发吗?还是不需要在 Windows 7 x64 及更高版本中运行我的驱动程序?

【问题讨论】:

    标签: c windows kernel code-signing windows-kernel


    【解决方案1】:

    使用 globalsign,我需要使用带有 /ac 参数的内核驱动程序的根证书(更多信息在这里 https://support.globalsign.com/customer/portal/articles/1491089-kernel-mode-driver-signing-%E2%80%93-windows-7-8) 也许你需要与 veriysign 类似。

    “...Windows 7 x64 及更高版本”: 这取决于您在驱动程序中使用的 API 以及是否为 x64。 对于 win32,您需要构建一个 win32 驱动程序。 在大多数 Windows 版本上,您可以在启动选项中禁用驱动程序签名检查。这样做会告诉你它是否真的与签名相关。 使用未签名和签名的驱动程序运行它。

    "当我尝试加载驱动程序时...": 首先检查注册表(HKLM:\system\currentcontrolset\services\)。

    【讨论】:

      【解决方案2】:

      您需要让 Microsoft 签署您的驱动程序才能在任何地方运行,但如果您自己正确签署它,那么您几乎可以在任何地方运行。在安全启动模式下运行的 Windows 10/Server 2016 将需要 MSFT 已签名的驱动程序,这将需要使用 WHQL 或 Windows 10 证明签名。查看 sysdev.microsoft.com 上的仪表板,了解有关这两个方面的更多信息。

      未签名的驱动程序通常不会给您一个找不到文件的错误,因此您可能在那里查看了错误的内容。确保您的驱动程序已正确注册以从正确的路径加载。使用 procmon 检查它是否可以正确找到文件。

      一旦你确定了这些东西,这个链接可能是你开始签名的好地方:https://www.osr.com/nt-insider/2016-issue1/today-in-driver-signing/

      不幸的是,弄清楚司机签名是一条漫长而痛苦的道路。 :(

      【讨论】:

      • 证明签名并不复杂。这与必须通过 HLK 流程并获得 Microsoft 会签的目录文件(它实际上是目录文件,而不是被签名的驱动程序)完全不同。比“漫长的痛苦之路”更糟糕的是它不断变化,规则因操作系统而异,有时点发布取决于证书颁发的日期、签名等以及要求一般来说......所有移动目标。这是我在前一家公司工作的一个“小”部分,但它确实需要一个全职职位。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多