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

ドライバーパッケージを一般にリリースする前に、パッケージを認証のために提出することをお勧めします。 詳細については、ウィンドウハードウェア認定ハードウェア ダッシュボード サービスを参照。 ドライバーパッケージを認証のために送信するには、ベリサインなどの信頼できる認証局から取得した証明書を使用してパッケージに署名する必要があります。 詳細については、ベリサイン証明書の取得を参照。 マイクロソフトが提供する相互証明書も必要です。

ベリサインから秘密キーファイル (PVK)とソフトウェア公開証明書 (SPC) という1組のファイルを取得したとします。 また、MyDriverという名前のドライバー プロジェクトと MyDriver Packageという名前のドライバー パッケージ プロジェクトを含む Microsoft Visual Studio ソリューションがあるとします。 ドライバーパッケージに署名するには、次の手順に従います。

  1. Pvk2Pfx ツールを使用して個人情報交換 (PFX) 証明書を作成します。 Pvk2Pfx ツールは、PVKファイルとSPCファイルを入力として受け取り、単一の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. パッケージのプロパティページで、構成プロパティ> ドライバー署名> 全般 に移動します。 サインモード ドロップダウン リストで、プロダクションサイン を選択します。 運用証明書には、次のいずれかを実行します。

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

    • ファイルから選択 を選択し、署名証明書を参照します。

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

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

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

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

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

  6. パッケージのプロパティ ページで、構成プロパティ> Inf2Cat> 一般 に移動します。 Inf2Catの実行 ドロップダウン リストで、Yes を選択します。

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

  8. ドライバー プロジェクトを長押し (または右クリック) し、[MyDriver][プロパティ] の順に選びます

  9. ドライバーのプロパティページで、構成プロパティ> ドライバー署名> 全般 に移動します。 TimeStampServer をドライバーパッケージのプロパティで使用したのと同じ値に設定します。 サインモード運用サインに設定し、運用証明書 をドライバーパッケージのプロパティで使用したのと同じ値に設定します。

  10. ドライバーパッケージをビルドする準備ができたら、F5 キーを押します。 Visual Studio は、パッケージとドライバーファイルに自動的に署名します。 展開を構成している場合、Visual Studio は署名付きドライバーパッケージをテスト コンピューターにも展開します。 詳細については、ドライバーの展開とテスト用にコンピューターをプロビジョニングする (WDK 8.1)を参照。

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

ソリューションを構築した後、ファイルエクスプローラーでドライバーパッケージが含まれるフォルダーに移動します。 パッケージ内のファイルの1つはカタログファイルです。 カタログファイルには、パッケージのデジタル署名が含まれています。 署名付きパッケージ内のファイルを表示する例については、テンプレートに基づいた KMDFドライバーの作成を参照。

WHQL リリース署名の取得

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

Windows 10、8.1、8、および 7 にインストールするには、ドライバーパッケージに1つの SHA1 署名を含めることができます。

Windows 10 以降では、デジタル署名用の新しい Windows 10 カーネル モード ドライバーをWindows Hardware Developer Center ダッシュボード ポータルに送信する必要もあります。 カーネルモードとユーザーモードドライバーの両方の提出には、有効な拡張検証 (「EV」) コード署名証明書が必要です。

**注** SHA1 の廃止はドライバーに適用されません。

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

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

ほとんどの場合、ドライバーパッケージに署名するだけで十分であり、個々のドライバーファイルに署名する必要はありません。 ただし、場合によっては、パッケージと個々のドライバー ファイルの両方に署名する必要があります。 たとえば、ブートスタートドライバーファイルには個別に署名する必要があります。 個々のドライバーファイルに署名することは、ドライバーファイルに署名を埋め込むと呼ばれます。

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

実稼働環境の署名用にドライバーパッケージのプロパティを設定するときは、それに応じて個々のドライバーファイルの署名プロパティを調整することを忘れないでください。 個々のドライバー ファイルの署名をオフにするか、パッケージに指定したのと同じ証明書を使用するように個々のドライバーファイルを設定します。

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