从 WinXP 开始,我就不再使用 Windows DDK(现在是 WDK),而且我注意到发生了很大的变化。
我正在使用最新的 Win7 DDK开发旧版 NT4 过滤器驱动程序(没有.inf
和没有),我的环境是.cat
Windows 7 64bit
Visual Studio 2010
WinDDK v7600.16385.1
VisualDDK plugin for VS (latest version)
我有问题自签名这个驱动程序,因为我仍在开发它我没有(也不知道如何获得)适当的 WHQL 证书,因此我正在遵循我在网上找到的程序。
@echo off
set SIGNTOOL="c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe"
set MAKECERT="c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\makecert.exe"
set PVK2PFX="c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\pvk2pfx.exe"
set CERTPVK="C:\Users\myself\Desktop\testdriver\avtxagent\package\mycompanynametest.pvk"
set CERTPFX="C:\Users\myself\Desktop\testdriver\avtxagent\package\mycompanynametest.pfx"
set CERT="C:\Users\myself\Desktop\testdriver\avtxagent\package\mycompanynametest.cer"
set DRIVER="C:\Users\myself\Desktop\testdriver\avtxagent\package\avtxagent.sys"
set CERTSUBJ="mycompanyname (test)"
del *.cer *.pfx *.pvk
cls
%MAKECERT% -r -n "CN=mycompanyname (test)" -sv %CERTPVK% %CERT%
%PVK2PFX% -pvk %CERTPVK% -spc %CERT% -pfx %CERTPFX%
pause
cls
%SIGNTOOL% sign /v /f %CERTPFX% /t "http://timestamp.verisign.com/scripts/timestamp.dll" %DRIVER%
pause
cls
:: verification
%SIGNTOOL% verify /pa /v %DRIVER%
pause
基本上我正在做的是每次生成证书(我已经尝试过只生成一次证书,仍然是同样的问题),签署我的驱动程序,然后尝试验证签名。在最后一步,验证中,我遇到了问题:
SignTool Error: A certificate chain processed, but terminated in a
root certificate which is not trusted by the trust provider.
显然,当我尝试以编程方式和使用 sc 安装然后启动旧版驱动程序时,我收到错误消息:
[SC] CreateService SUCCESS
[SC] StartService FAILED 577:
Windows cannot verify the digital signature for this file. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source.
如果我按照本指南http://technet.microsoft.com/en-us/library/cc754841.aspx并在受信任的认证中导入证书,则验证过程会顺利进行,但我从 sc 收到相同的错误。
我究竟做错了什么 ?而且,由于文档有点缺乏,有没有人可以解释我必须做什么才能获得在生产环境中使用的适当证书?