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 から同じエラーが発生します。
私は何を間違っていますか?また、ドキュメントが不足しているため、本番環境で使用する適切な証明書を取得するために何をしなければならないかを説明できる人はいますか?