签署Windows x64驱动程序 - 系统找不到指定的文件

时间:2018-02-03 23:23:21

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

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

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

  

Signtool签名/ v / s my / n“my_company”/ sha1 my_sha256_hash / t   http://timestamp.verisign.com/scripts/timestamp.dll mydriver.sys

当我试图加载驱动程序时,我得到一个错误,说系统找不到指定的文件,我看看驱动程序取决于一切都没问题。

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

我尝试使用我的相关二进制文件签署我的cat文件,但仍然没有运气。

我已经读过有一个名为WHQL的程序,在最后的过程中微软给我的“好”签名驱动程序,它是否只适用于Windows Update发行版?或者是否没有必要在Windows 7 x64及更高版本中运行我的驱动程序?

2 个答案:

答案 0 :(得分:0)

您需要让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/

不幸的是,找出驾驶员签名是一条漫长而痛苦的道路。 :(

答案 1 :(得分:0)

使用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 \)。