構成証明署名 Windows 10+ ドライバー

この記事では、構成証明署名を使ってドライバーに署名する方法について説明します。 構成証明署名の詳細と要件については、「Windows 10 構成証明署名済みドライバー」を参照してください。

重要

2023 年 3 月 1 日の時点で、小売対象ユーザーを対象とする構成証明署名付きドライバーは Windows Update で公開されなくなりました。 テスト シナリオ用の構成証明署名付きドライバーは CoDev または Test Registry Key /Surface SSRK オプション を選択しても引き続きサポートされます。

前提条件

CAB ファイルを作成する

このセクションでは、CAB ファイル申請を作成するプロセスを順を追って説明します。 プロセスの説明にはエコー ドライバーのサンプルを使用します。

一般的な CAB ファイル申請には、以下を含める必要があります。

  • ドライバー自体 (例: Echo.sys

  • 署名プロセスを容易にするためにダッシュボードによって使用されるドライバー INF ファイル。

  • デバッグ情報に使用されるシンボル ファイル。 たとえば、Echo.pdb です。 .pdb ファイルは、Microsoft の自動クラッシュ分析ツールに必要です。

  • カタログ .CAT ファイルは必須で、会社の検証用にのみ使用されます。 Microsoft はカタログ ファイルを再生成し、送信されたすべてのカタログ ファイルを置き換えます。

Note

CAB ファイル内の各ドライバー フォルダーは、同じアーキテクチャのセットをサポートする必要があります。 たとえば、これらが x86 または x64 をサポートしているか、x86 と x64 の両方をサポートしている必要があります。

ドライバーの場所を参照するときは、UNC ファイル共有パス (\\\server\share) は使わないでください。 CAB を検証するには、マップ済みのドライブ文字を使用する必要があります。

CAB ファイルを作成するには:

  1. 署名するバイナリを 1 つのディレクトリにまとめます。 この例では、C:\\Echo を使用します。

  2. 管理者として [コマンド プロンプト] ウィンドウを開きます。

  3. MakeCab /?」と入力して、MakeCab オプションを表示します。

    C:\Echo> MakeCab /?
    Cabinet Maker - Lossless Data Compression Tool
    
    MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination]
    MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...]
    
    source         File to compress.
    destination    File name to give compressed file.  If omitted, the
                   last character of the source file name is replaced
                   with an underscore (_) and used as the destination.
    /F directives  A file with MakeCAB directives (may be repeated). Refer to
                   Microsoft Cabinet SDK for information on directive_file.
    /D var=value   Defines variable with specified value.
    /L dir         Location to place destination (default is current directory).
    /V[n]          Verbosity level (1..3).
    
  4. cab ファイルの DDF 入力ファイルを準備します。 Echo ドライバーの場合、次のようになります。

    ;*** Echo.ddf example
    ;
    .OPTION EXPLICIT     ; Generate errors
    .Set CabinetFileCountThreshold=0
    .Set FolderFileCountThreshold=0
    .Set FolderSizeThreshold=0
    .Set MaxCabinetSize=0
    .Set MaxDiskFileCount=0
    .Set MaxDiskSize=0
    .Set CompressionType=MSZIP
    .Set Cabinet=on
    .Set Compress=on
    ;Specify file name for new cab file
    .Set CabinetNameTemplate=Echo.cab
    ; Specify the subdirectory for the files.  
    ; Your cab file should not have files at the root level,
    ; and each driver package must be in a separate subfolder.
    .Set DestinationDir=Echo
    ;Specify files to be included in cab file
    C:\Echo\Echo.Inf
    C:\Echo\Echo.Sys
    
  5. 次のように入力して、CAB ファイルを作成します。

    C:\Echo> MakeCab /f "C:\Echo\Echo.ddf
    

    MakeCab の出力には、作成された CAB ファイル内のファイルの数が表示されます。 この場合は、2 つのファイルがあります。

    C:\Echo> MakeCab /f Echo.ddf
    Cabinet Maker - Lossless Data Compression Tool
    
    17,682 bytes in 2 files
    Total files:              2
    Bytes before:        17,682
    Bytes after:          7,374
    After/Before:            41.70% compression
    Time:                     0.20 seconds ( 0 hr  0 min  0.20 sec)
    Throughput:              86.77 Kb/second
    
  6. Disk1 サブディレクトリ内で CAB ファイルを探します。 エクスプローラー内で CAB ファイルを選択すると、必要なファイルが含まれているかどうかを確認できます。

EV 証明書を使って CAB ファイルに署名する

  1. EV 証明書プロバイダーで推奨されるプロセスに従い、ご自身の EV 証明書を使って CAB ファイルに署名します。 たとえば、SHA256 Certificate/Digest Algorithm/Timestamp を使用して CAB ファイルに署名するには、次のコマンドを入力します。

    C:\Echo> SignTool sign /ac "C:\MyEVCert.cer" /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
    

    重要

    業界のベスト プラクティスを使用して、EV コード署名プロセスのセキュリティを管理することを忘れないでください。

パートナー センターを使って、EV 署名された CAB ファイルを提出する

  1. パートナー センター ハードウェア ダッシュボードに移動し、ご自身の資格情報を使用してサインインします。

  2. [Submit new hardware]\(新しいハードウェアの申請\) を選択します。

    Screenshot of the the list of submitted hardware.

  3. [Packages and signing properties]\(パッケージと署名のプロパティ\) セクション内で、ドライバー申請の製品名を入力します。 この名前は、ドライバーの申請を検索して整理するために使用できます。

    Note

    別の会社とドライバーを共有する場合、この名前が表示されます。

  4. 両方のテスト署名オプションはオフのままにします。

  5. [要求された署名] で、ご自身のドライバー パッケージに含める署名を選択します。

    A screenshot showing the options for submitting the echo driver for signing.

  6. ページ内を下に移動し、[送信] を選択します。

  7. 署名プロセスが完了したら、ハードウェア ダッシュボードから署名済みドライバーをダウンロードします。

ドライバーが正しく署名されていることを検証する

ドライバーが正しく署名されていることを確認するには、次の手順を実行します。

  1. 申請ファイルをダウンロードしたら、ドライバー ファイルを抽出します。

  2. 管理者として [コマンド プロンプト] ウィンドウを開きます。

  3. 次のコマンドを入力して、ドライバーが適切に署名されていることを確認します。

    C:\Echo> SignTool verify Echo.Sys
    
  4. 追加の情報を表示し、signtool で複数の署名に基づいてファイル内のすべての署名を確認するには、次のコマンドを入力します。

     C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
    
  5. ドライバーの EKU を確認するには、次の手順を実行します。

    1. Windows エクスプローラーを開き、バイナリ ファイルを見つけます。 そのファイルを長押し (または右クリック) し、[プロパティ] を選びます。

    2. デジタル署名 タブで 、[署名] リストの一覧にある項目を選択します。

    3. [詳細][証明書の表示] の順に選択します。

    4. [詳細] タブで、[拡張キー使用法] を選択します。

ドライバーがダッシュボードによって再署名されると、次のプロセスが使用されます。

  • Microsoft SHA2 埋め込み署名を追加します。
  • ドライバーのバイナリが顧客によって独自の証明書を使って埋め込み署名されている場合、それらの署名は上書きされません。
  • SHA2 Microsoft 証明書を使用して新しいカタログ ファイルを作成し、署名します。 このカタログは、顧客が提供するすべての既存のカタログを置き換えます。

Windows 10でドライバーをテストする

サンプル ドライバーをインストールするには、次の手順に従います。

  1. 管理者として [コマンド プロンプト] ウィンドウを開きます。 ご自身のドライバー パッケージのフォルダーに移動し、次のコマンドを入力します。

    C:\Echo> devcon install echo.inf root\ECHO
    
  2. ドライバーのインストール プロセスで、"ドライバー ソフトウェアの発行元を検証できません" という Windows のセキュリティ ダイアログ ボックスが表示されないことを確認します。

複数のドライバーを含む申請を作成する

複数のドライバーを同時に申請するには:

  1. 次に示すように、ドライバーごとにサブディレクトリを作成します。

    A diagram showing an example driver signing directory structure.

  2. サブディレクトリを参照する CAB ファイル DDF 入力ファイルを準備します。 次のように表示されます。

    ;*** Submission.ddf multiple driver example
    ;
    .OPTION EXPLICIT     ; Generate errors
    .Set CabinetFileCountThreshold=0
    .Set FolderFileCountThreshold=0
    .Set FolderSizeThreshold=0
    .Set MaxCabinetSize=0
    .Set MaxDiskFileCount=0
    .Set MaxDiskSize=0
    .Set CompressionType=MSZIP
    .Set Cabinet=on
    .Set Compress=on
    ;Specify file name for new cab file
    .Set CabinetNameTemplate=Echo.cab
    ;Specify files to be included in cab file
    ; First Driver
    .Set DestinationDir=DriverPackage1
    C:\DriverFiles\DriverPackage1\Driver1.sys
    C:\DriverFiles\DriverPackage1\Driver1.inf
    ; Second driver
    .Set DestinationDir=DriverPackage2
    C:\DriverFiles\DriverPackage2\Driver2.sys
    C:\DriverFiles\DriverPackage2\Driver2.inf