一般リリース用のドライバーへの署名

ドライバー パッケージを一般にリリースする前に、パッケージの認定依頼を提出することをお勧めします。詳しくは、Windows ハードウェア認定に関するページハードウェア ダッシュボード サービスに関するページをご覧ください。ドライバー パッケージの認定依頼を提出するには、信頼できる証明機関 (VeriSign など) から取得した証明書を使ってパッケージに署名する必要があります。詳しくは、VeriSign 証明書の取得に関するページをご覧ください。Microsoft から提供されるクロス証明書も必要です。

Verisign から、秘密キー ファイル (PVK) とソフトウェア発行元証明書 (SPC) の一対のファイルを取得済みだとします。また、MyDriver という名前のドライバー プロジェクトと MyDriver Package という名前のドライバー パッケージ プロジェクトを含む Microsoft Visual Studio ソリューションもあるとします。ドライバー パッケージに署名するには、次の手順を実行します。

  1. Pvk2Pfx ツールを使って、Personal Information Exchange (PFX) 証明書を作ります。Pvk2Pfx ツールは PVK ファイルと SPC ファイルを入力として取り、1 つの PFX ファイルを作ります。この作業では、PFX ファイルの名前を MyCert.pfx とします。

      PFX ファイルを作っておくと、他のドライバー プロジェクトや他のドライバー開発コンピューターで再利用することができます。

     

  2. 必要なクロス証明書を確認するには、カーネル モードのコード署名用のクロス証明書に関するページをご覧ください。必要なクロス証明書が $(BASEDIR)\CrossCertificates にあることを確認します。$(BASEDIR) は、Windows キットの基本ディレクトリです (c:\Program Files (x86)\Windows Kits\8.0\CrossCertificates など)。必要なクロス証明書がない場合は、Microsoft からクロス証明書をダウンロードして $(BASEDIR)\CrossCertificates にコピーします。

  3. Visual Studio で、MyDriver プロジェクトと MyDriver Package プロジェクトを含むソリューションを開きます。[ソリューション エクスプローラー] ウィンドウが表示されていない場合は、[表示] メニューの [ソリューション エクスプローラー] をクリックします。[ソリューション エクスプローラー] ウィンドウで、パッケージ プロジェクト [MyDriver Package] を右クリックし、[プロパティ] をクリックします。

  4. パッケージのプロパティ ページで、[構成プロパティ]、[ドライバーの署名]、[全般] の順に移動します。 [Sign Mode] (署名モード) ドロップダウン リストで、[Production Sign] (実稼働署名) をクリックします。[Production Certificate] (実稼働証明書) で、次のいずれかを実行します。

    • 署名証明書のパス (c:\Certs\MyCert.pfx など) を入力します。

    • [Select From File] (ファイルから選択) を選択して、署名証明書を参照します。

    • [ストアから選択] を選択して、前に証明書ストアにインポートした証明書を選択します。

        証明書をストアにインポートするには、証明書ファイル (PFX ファイル) を右クリックして、[PFX のインストール] をクリックします。証明書のインポート ウィザードの指示に従います。

       

        後で別の証明書を使う場合は、新しい証明書が証明書ストアにインポートされていることを確認してください。[Select From File] (ファイルから選択) を選択して新しい証明書を参照した場合は、新しい証明書は自動的に証明書ストアにインポートされます。ただし、新しい証明書のパスを手動で入力した場合は、証明書ストアに自動的にはインポートされません。この場合は、新しい証明書ファイルを右クリックして、[PFX のインストール] をクリックする必要があります。

       

  5. プロパティ ページの [ドライバーの署名]、[全般][TimeStampServer] (TimeStampServer) で、ドロップダウン リストのタイムスタンプ サーバーから 1 つを選択します。

      ドロップダウン リストのタイムスタンプ サーバーのいずれかを使うには、ドライバー パッケージをビルドするときにインターネットに接続している必要があります。ドライバー パッケージのビルド時にインターネットから切断する必要がある場合は、[TimeStampServer] (TimeStampServer) フィールドをクリアします。

     

  6. パッケージのプロパティ ページで、[構成プロパティ]、[Inf2Cat] (Inf2Cat)、[全般] の順に移動します。[Run Inf2Cat] (Inf2Cat の実行) ドロップダウン リストで、[はい] をクリックします。

  7. パッケージのプロパティ ページを閉じます。

  8. ドライバー プロジェクト [MyDriver] を右クリックし、[プロパティ] をクリックします。

  9. ドライバーのプロパティ ページで、[構成プロパティ]、[ドライバーの署名]、[全般] の順に移動します。[TimeStampServer] (TimeStampServer) を、ドライバー パッケージのプロパティで使った値と同じ値に設定します。[Sign Mode] (署名モード)[Production Sign] (実稼働署名) に設定し、[Production Certificate] (実稼働証明書) をドライバー パッケージのプロパティで使った値と同じ値に設定します。

  10. ドライバー パッケージをビルドする準備ができたら、F5 キーを押します。Visual Studio によって、パッケージとドライバー ファイルが自動的に署名されます。展開するように構成してある場合は、署名されたドライバー パッケージは Visual Studio によってテスト コンピューターに展開されます。詳しくは、「ドライバーの展開およびテストのためのコンピューターのプロビジョニング (WDK 8.1)」をご覧ください。

ドライバー パッケージ ファイルの表示

ソリューションをビルドした後、エクスプローラーで、ドライバー パッケージを含むフォルダーに移動します。パッケージ内のファイルの 1 つはカタログ ファイルです。カタログ ファイルには、パッケージのデジタル署名が含まれています。署名されたパッケージ内のファイルを表示する例については、「テンプレートを使った KMDF ドライバーの作成」をご覧ください。

WHQL リリース署名の取得

ドライバー パッケージが認定テストに合格すると、Windows Hardware Quality Labs (WHQL) がこのドライバー パッケージに署名できるようになります。ドライバー パッケージが WHQL によって署名されると、Windows Update プログラムや Microsoft がサポートする他の配布メカニズムによって配布することができます。

パッケージへの署名と個々のドライバー ファイルへの署名の比較

ドライバー パッケージには、複数のファイルが含まれます。ドライバー パッケージには通常、1 つ以上のドライバー ファイル、情報ファイル (INF ファイル)、カタログ ファイルが含まれます。カタログ ファイルには、パッケージ内の他のファイルに関する情報が含まれています。カタログ ファイルに署名すると、カタログ ファイル内の署名は、ドライバー パッケージ全体の署名として機能します。つまり、"カタログ ファイルへの署名" は "ドライバー パッケージへの署名" と同じです。**

ほとんどの場合、ドライバー パッケージに署名すれば十分で、個々のドライバー ファイルに署名する必要はありません。ただし、パッケージと個々のドライバー ファイルの両方への署名が必要になる場合があります。たとえば、ブート開始ドライバー ファイルは、個々のファイルに署名する必要があります。個々のドライバー ファイルへの署名は、"ドライバー ファイルへの署名の埋め込み" と呼ばれます。**

MyDriver という名前のドライバー プロジェクトと MyDriver Package という名前のドライバー パッケージ プロジェクトを含む Microsoft Visual Studio ソリューションがあるとします。Visual Studio には、MyDriver 用と MyDriver Package 用の 2 つのプロパティ ページが用意されています。ドライバー パッケージに署名するには、MyDriver Package の [ドライバーの署名] プロパティを設定します。個々のドライバー ファイルに署名を埋め込むには、MyDriver の [ドライバーの署名] プロパティを設定します。

ドライバー パッケージのプロパティを実稼働署名に設定するときは、それに応じて個々のドライバー ファイルの署名プロパティも調整する必要があります。個々のドライバー ファイルの署名を無効にするか、または個々のドライバー ファイルがパッケージに対して指定したものと同じ証明書を使うように設定します。

2 つの署名を使ったドライバー パッケージへの署名

場合によっては、2 つの異なる署名を使ってドライバー パッケージに署名することがあります。たとえば、ドライバーを Windows 7 と Windows 8 で実行させるとします。Windows 8 では SHA256 ハッシュ アルゴリズムを使って作った署名がサポートされていますが、Windows 7 ではサポートされていません。Windows 7 には、SHA1 ハッシュ アルゴリズムを使って作った署名が必要です。

x64 ハードウェア プラットフォーム上の Windows 7 と Windows 8 で実行されるドライバー パッケージをビルドして署名するとします。SHA1 で作ったプライマリ署名を使って、ドライバー パッケージに署名できます。その後、SHA256 を使ったセカンダリ署名を追加できます。両方の署名に同じ証明書を使うことも、別々の証明書を使うこともできます。Visual Studio を使って 2 つの署名を作る手順を次に示します。

  • [ソリューション エクスプローラー] ウィンドウで、[ソリューション SolutionName] を右クリックし、[構成マネージャー] をクリックします。ドライバー プロジェクトとパッケージ プロジェクトについて、[構成][Win7 Release] (Windows 7 Release) に、[プラットフォーム][x64] に設定します。

  • ドライバー パッケージのプロパティ ページを開きます。[構成プロパティ]、[ドライバーの署名]、[全般] の順に移動します。[Sign Mode] (署名モード) ドロップダウン リストで、[Production Sign] (実稼働署名) をクリックします。[Production Certificate] (実稼働証明書) に、署名証明書のパスを入力します。

  • ドライバー パッケージのプロパティ ページで、[構成プロパティ]、[カスタム ビルド ステップ]、[全般] の順に移動します。[説明] で、[カスタム ビルド ステップを実行しています。] を選択します。[以後に実行] で、[DriverProductionSign] (DriverProductionSign) を選択します。[コマンド ライン] に次のコマンドを入力します。

    Signtool sign /fd sha256 /ph /as /sha1 XX...XX $(TargetPath)

    XX...XX は、セカンダリ署名に使っている証明書のハッシュです。

      証明書のハッシュ (拇印とも呼ばれます) を確認するには、コマンド プロンプト ウィンドウを開いて、証明書を含むディレクトリに移動します。コマンド certutil -dump CertName.pfx を入力します。CertName.pfx は証明書の名前です。

     

関連トピック

ドライバーへの署名

Windows ハードウェア認定

ハードウェア ダッシュボード サービス

Windows のドライバー署名の要件に関するページ

カーネル モードのコード署名のクロス証明書

カーネル モードのコード署名の手順

ドライバーの署名

ブート開始ドライバーのインストール

ドライバーの署名用ツール