3

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 から同じエラーが発生します。

私は何を間違っていますか?また、ドキュメントが不足しているため、本番環境で使用する適切な証明書を取得するために何をしなければならないかを説明できる人はいますか?

4

3 に答える 3

1

カーネル モード ドライバーに署名するために WHQL 署名は必要ありません。必要なのは、GlobalSign または Verisign から購入したコード署名証明書です (他のものは機能しません)。証明書がある場合は、このコード署名証明書を使用してドライバーに署名します。注: Microsoft からの相互認証も含める必要があります。

別の方法として (デバッグのみを目的として)、署名がチェックされないテスト モードでシステムをロードすることもできます。これを行うには、システムの起動中に F8 を押して、メニューで対応するオプションを選択する必要があります。

于 2012-12-19T16:36:32.083 に答える
0

これは、証明書の生成に使用したプライベート CA がシステムによって信頼されていないことが原因である可能性があります。これらは関連しているように見えます:

http://technet.microsoft.com/en-us/library/dd441378(office.13).aspx

http://technet.microsoft.com/en-us/library/cc754841.aspx

于 2012-12-19T16:17:25.693 に答える