Windows内核驱动程序签名和服务创建
在签署内核模式驱动程序并为其创建服务时遇到了一些问题 因此,我使用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需要数字签名的驱动程序”对话框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
有什么好处?它已经被证明是签署的。这个过程我已经试了三次,但都没有成功。我已尝试启动该服务,但我得到了一个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