locked
Visual Studio 2015 でのテスト署名方法 RRS feed

  • Allgemeine Diskussion

  • (※ 2017 年 8 月 22 日に Japan WDK Support Blogに公開した情報のアーカイブです。)

    今回は、Visual Studio 2015 でのテスト署名方法とx64 版のOS でインストールして動作するところまでの手順をご紹介します。

     

    と言っても、WDK で提供されているサンプルはたいてい自動的にテスト署名されることが多いため、テスト署名の方法そのものは、通常はあまり意識する必要がないかもしれません。そのため、テスト署名をされた際に、インストールがうまくいかない場合に、正しい手順との比較がしたい、というような目的としても、今回のブログエントリをご参考にしていただけると幸いです。

     

    今回は、例として、「NDIS Virtual Miniport Driver(netvmini)サンプルをインストールする」でご紹介した、NDIS Virtual Miniport Driver (netvmini) サンプルにテスト署名をし、x64 OS であるWindows Server 2016 にインストールしたいと思います。サンプルをビルドする、開発側のPC Windows 10 (1703) x64 Visual Studio 2015 WDK 10 がインストールされています。

     

    なお、テスト署名の説明そのものは「ドライバーのデジタル署名の基礎」、Visual Studio を使わずに、コマンドからテスト署名する方法については、以前のブログエントリ「INFファイルを記述する」もしくは、以下のドキュメントをご参照いただければ幸いです。

     

    Test Signing

    https://docs.microsoft.com/en-us/windows-hardware/drivers/install/test-signing

     

     

    1. サンプルの入手

     

    NDIS Virtual Miniport Driver (netvmini) サンプルは、以下のサイトの右側の緑色の [Clone or Download] ボタンを押すと表示される [Download ZIP] ボタンでWindows-driver-samples-master.zipをダウンロードすると、Windows-driver-samples-master\network\ndis\netvmini\6x のフォルダにあります。

     

    https://github.com/Microsoft/Windows-driver-samples

     

     

    2. サンプルのビルドの準備

     

    このnetvmini\6x フォルダのnetvmini.sln を、Visual Studio 2015 で開きます。

     

    clip_image002

     

    [ソリューション ‘netvmini] を右クリックして [構成マネージャー] をクリックします。

     

    clip_image004

     

    今回は、[アクティブソリューション構成] [Debug][アクティブ ソリューション プラットフォーム] [x64] とします。また、今回はnetvmini630 (NDIS 6.30) のプロジェクトを使いたいと思いますので、netvmini60 netvmini620 [ビルド] のチェックボックスは外します。

     

     

    3. テスト署名の設定

     

    さて、テスト署名を行うために、プロジェクトnetvmini630 を右クリックして[プロパティ] を開き、[構成プロパティ]-[Driver Signing]-[General]-[Sign Mode] [Test Sign] であることを確認します。また、[Test Certificate] をブランクのままにしておく(テスト証明書を指定しない) ことで、デフォルト動作として、新規にテスト証明書が作成されます。

     

    clip_image006

     

    続いて、[構成プロパティ]-[Inf2Cat]-[General]-[Run Inf2Cat] [はい] であることを確認します。

     

    clip_image008

     

    なお、[Use Local Time] [はい] にすることで、INF ファイルのDriverVer ディレクティブのチェック対象のタイムゾーンを、デフォルトの UTC から日本時間に変更しておきます。

    UTC と日本時間は時差が9時間ありますので、UTC のままの場合、日本でビルドした日付がUTC よりも一日早まる時間帯があります。これによりInf2Cat Signability test で以下のエラーが発生しますが、上記の変更を行っておくことで、このエラーを避けることができます。

     

    22.9.7: DriverVer set to a date in the future (postdated DriverVer not allowed) in \netvmini630.inf.

     

     

    4. サンプルのビルド

     

    [ソリューション ‘netvmini] を右クリックして [ソリューションのリビルド] をクリックします。\netvmini\6x\630\Debug\netvmini630 フォルダに以下の3 つのファイルができます。

     

    netvmini630.cat

    netvmini630.inf

    netvmini630.sys

     

    また、一階層上の、\netvmini\6x\630\Debug\ フォルダにnetvmini630.cer というテスト証明書ができます。

     

    ここで、netvmini640.cat を右クリックして[プロパティ] をクリックすると、以下のように[デジタル署名] のタブができており、カタログファイルにテスト署名されたことが確認できます。

     

    clip_image010

     

    同様に、netvmini630.sys を右クリックして[プロパティ] をクリックすると、こちらも以下のように[デジタル署名] のタブができており、ドライバファイルにもテスト署名されたことが確認できます。

     

    clip_image012

    Montag, 28. Januar 2019 06:31
    Besitzer

Alle Antworten

  • 5. テスト証明書のインストール

     

    今回動作確認するOS は、Windows Server 2016 です。これが入っているターゲットPC C:\netvmini630 というフォルダを作り、前述のビルドしてできた4 つのファイルをコピーします。

     

    また、テスト証明書のインストールのために、WDK 10 がインストールされている開発側のPC \Program Files (x86)\Windows Kits\10\bin\x64 にある、certmgr.exe を、上記のフォルダにコピーしておきます。

     

    ターゲットPC をテストモードにするために、管理者権限のコマンドプロンプトから、以下のコマンドを実行します。

     

    bcdedit /set testsigning on

     

    OS を再起動します。

     

    ログインして、画面右下に「テスト モード」と表示されていることを確認します。

     

    clip_image014

     

    テスト証明書を[信頼されたルート証明機関] [信頼された発行元] の証明書ストアにインストールするために、管理者権限のコマンドプロンプトから、以下のコマンドを実行します。

     

    // [信頼されたルート証明機関] の証明書ストアにインストール

    certmgr.exe /add netvmini630.cer /s /r localMachine root

     

    // [信頼された発行元] にインストール

    certmgr.exe /add netvmini630.cer /s /r localMachine trustedpublisher

     

    これを実行すると、certlm.msc で、以下のように、テスト証明書が[信頼されたルート証明機関] [信頼された発行元] の証明書ストアにインストールされたことを確認できます。

     

    clip_image016

     

     

    clip_image018

     

     

    6. サンプルのインストール

     

    [スタート] を右クリックして [デバイスマネージャー] をクリックします。

    メニューの[操作] から [レガシ ハードウェアの追加] をクリックします。(表示されない場合は、PC 名やデバイスクラスなど、任意の場所をクリックしてください。)

     

    clip_image020

     

    ハードウェアの追加ウィザードが開きます。

     

    clip_image022

     

    [次へ] をクリックし、[一覧から選択したハードウェアをインストールする] を選択して [次へ] をクリックします。

     

    clip_image024

     

    [ネットワーク アダプター] を選択して [次へ] をクリックします。

     

    clip_image026

     

    右下の [ディスク使用] をクリックします。

     

    clip_image028

    Montag, 28. Januar 2019 06:32
    Besitzer
  • [参照] ボタンをクリックして、C:\netvmini630 フォルダのnetvmini630.inf を選択し、[開く] をクリックします。

     

    clip_image030

     

    以下の画面で [OK] をクリックします。

     

    clip_image032

     

    以下の画面で、ドライバが署名されていると認識されています。[次へ] をクリックしていきます。

     

    clip_image034

     

    clip_image036

     

    警告もエラーもなく完了し、以下の画面が表示されましたので、テスト署名でのインストールが問題なくできたことを確認できました。[完了] をクリックします。

     

    clip_image038

     

     

    7. デバイスマネージャーでの確認

     

    [デバイス マネージャー] の画面に戻るので、[ネットワーク アダプタ―] の下を見てみると、今回のサンプル[Virtual Ethernet Adapter (NDIS 6.30)] がインストールされたことが確認できます。

     

    clip_image040

     

    今回ご紹介する手順は以上です。

     

     

    参考文献

     

    Test Signing

    https://docs.microsoft.com/en-us/windows-hardware/drivers/install/test-signing

     

    How to Test-Sign a Driver Package

    https://docs.microsoft.com/en-us/windows-hardware/drivers/install/how-to-test-sign-a-driver-package

     

    Inf2Cat Properties for Driver Package Projects

    https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/inf2cat-properties-for-driver-package-projects

     

    Signing a Driver During Development and Testing

    https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/signing-a-driver-during-development-and-testing

     

    Driver Signing Properties

    https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/driver-signing-properties

     

    Installing Test Certificates

    https://docs.microsoft.com/en-us/windows-hardware/drivers/install/installing-test-certificates

     

    以上の内容がお役に立ちましたら幸いです。

     

    WDK サポートチーム 津田

    Montag, 28. Januar 2019 06:32
    Besitzer