это было со времен WinXP, я не использую Windows DDK (теперь WDK), и я заметил, что что-то большое изменилось.
Я разрабатываю устаревший драйвер фильтра NT4 (без .inf
и без .cat
) с последним Win7 DDK, моя среда
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 и импортировать сертификат в Trusted Certification, процесс проверки проходит успешно, но я получаю ту же ошибку от sc.
Что я делаю неправильно ? И кто-нибудь может объяснить, что мне нужно сделать, чтобы получить соответствующий сертификат для использования в производственной среде, поскольку документации не хватает?