Windows内核驱动程序签名和服务创建

Windows内核驱动程序签名和服务创建,windows,windows-services,driver,wdk,driver-signing,Windows,Windows Services,Driver,Wdk,Driver Signing,在签署内核模式驱动程序并为其创建服务时遇到了一些问题 因此,我使用makecert创建了一个自签名证书: makecert-r-pe-n“CN=XXX”-ss“XXX”-sr LocalMachine 然后,我使用证书管理管理单元将证书导出到.pfx文件,并使用signtool对.sys驱动程序进行签名: 标志工具标志/f myCert.pfx/p xxx/t driver.sys 这是成功的。在使用signtool进行验证时,我收到: 验证:driver.sys 文件散列(sha1):9A…7

在签署内核模式驱动程序并为其创建服务时遇到了一些问题

因此,我使用makecert创建了一个自签名证书:

makecert-r-pe-n“CN=XXX”-ss“XXX”-sr LocalMachine

然后,我使用证书管理管理单元将证书导出到.pfx文件,并使用signtool对.sys驱动程序进行签名:

标志工具标志/f myCert.pfx/p xxx/t driver.sys

这是成功的。在使用signtool进行验证时,我收到:

验证:driver.sys 文件散列(sha1):9A…7F

但是,当我尝试为其创建服务时:

sc create ncd binPath=C:\Windows\System32\drivers\drivers.sys类型= 内核

(binpath已验证存在),服务已创建,但大约10-20秒后,“程序兼容性助手”出现,并显示恼人的“Windows需要数字签名的驱动程序”对话框


有什么好处?它已经被证明是签署的。这个过程我已经试了三次,但都没有成功。我已尝试启动该服务,但我得到了一个BSOD,其中包含一个与此问题相关的BC代码(未签名的驱动程序在XP/32位7上运行正常)。

您可以在此处找到一些有用的文档:

正如Luke所说,您需要这两个步骤,提供的链接解释了步骤2。 使用从Microsoft获得的交叉证书,您应该对这些驱动程序进行签名。
签名是用Win sdk工具完成的。

自签名是不够的;它还需要与仅支持真正CA证书的Microsoft证书交叉签名。出于测试目的,您可以启用它。我已经解决了这个问题——我处于测试签名模式,它工作正常。但是,我找到了交叉签名证书列表,但我不确定如何使用它们。我有带.cer和指纹sha1的zip文件,但证书管理器要求提供URL。我不知道确切的过程,但您必须1)使用支持的CA证书(VeriSign等)对二进制文件进行签名,然后2)使用Microsoft提供的相应交叉签名证书对二进制文件进行交叉签名。@Luke您能回答吗?这似乎就是问题所在。
Signing Certificate Chain:
    Issued to: XXX
    Issued by: xxx
    Expires:   Sat Dec 31 16:59:59 2039
    SHA1 hash: 12...46

The signature is timestamped: Sun Jun 10 03:35:21 2012
Timestamp Verified by:
    Issued to: UTN-USERFirst-Object
    Issued by: UTN-USERFirst-Object
    Expires:   Tue Jul 09 11:40:36 2019
    SHA1 hash: E1...46

        Issued to: COMODO Time Stamping Signer
        Issued by: UTN-USERFirst-Object
        Expires:   Sun May 10 16:59:59 2015
        SHA1 hash: 3D...C8

Successfully verified: driver.sys

Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0