構成証明署名 Windows 10+ ドライバー
この記事では、構成証明署名を使ってドライバーに署名する方法について説明します。 構成証明署名の詳細と要件については、「Windows 10 構成証明署名済みドライバー」を参照してください。
重要
2023 年 3 月 1 日の時点で、小売対象ユーザーを対象とする構成証明署名付きドライバーは、Windows Updateに公開されなくなりました。 テスト シナリオ用の構成証明署名付きドライバーは、 CoDev または テスト レジストリ キー/Surface SSRK オプションを選択する場合でもサポートされます。
前提条件
Windows 10 構成証明署名済みドライバーの要件を読んで理解してください。
ハードウェア開発者プログラムに登録します。 まだ登録していない場合は、Microsoft Windows ハードウェア開発者プログラムへの登録方法に関するページの手順に従います。
拡張検証 (EV) コード署名証明書が必要です。 組織にコード署名証明書が既にあるかどうかを確認してください。 会社に既に証明書がある場合は、その証明書を使用できます。 組織に証明書がない場合は、EV 証明書を購入する必要があります。
「Windows 10 用のキットとツールのダウンロード」で説明されているプロセスに従って、Windows Driver Kit (WDK) をダウンロードし、インストールしてください。
(省略可能) この記事で使用されているエコー ドライバーのサンプルをダウンロードします。
CAB ファイルを作成する
このセクションでは、CAB ファイル申請を作成するプロセスを順を追って説明します。 プロセスの説明にはエコー ドライバーのサンプルを使用します。
一般的な CAB ファイル申請には、以下を含める必要があります。
ドライバー自体 (Echo.sys など)。
ドライバー INF ファイル。署名プロセスを容易に実行するために、ダッシュボードで使われます。
シンボル ファイル。デバッグ情報用に使用されます。 たとえば、Echo.pdb などです。 .pdb ファイルは、Microsoft の自動クラッシュ分析ツールに必要です。
カタログ .CAT ファイルは必須で、会社の検証用にのみ使用されます。 Microsoft では、カタログ ファイルを再生成し、提出されたカタログ ファイルを置き換えます。
注意
CAB ファイル内の各ドライバー フォルダーは、同じアーキテクチャのセットをサポートする必要があります。 たとえば、これらが x86 または x64 をサポートしているか、x86 と x64 の両方をサポートしている必要があります。
ドライバーの場所を参照するときは、UNC ファイル共有パス (\\\server\share
) は使わないでください。 CAB を検証するには、マップ済みのドライブ文字を使用する必要があります。
CAB ファイルを作成するには:
署名するバイナリを 1 つのディレクトリにまとめます。 この例では、
C:\\Echo
を使用します。管理者としてコマンド プロンプト ウィンドウを開きます。
「
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).
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
次のように入力して、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
Disk1
サブディレクトリ内で CAB ファイルを探します。 エクスプローラー内で CAB ファイルを選択すると、必要なファイルが含まれているかどうかを確認できます。
EV 証明書を使って CAB ファイルに署名する
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 ファイルを提出する
パートナー センター ハードウェア ダッシュボードに移動し、ご自身の資格情報を使用してサインインします。
[Submit new hardware](新しいハードウェアの申請) を選択します。
[Packages and signing properties](パッケージと署名のプロパティ) セクション内で、ドライバー申請の製品名を入力します。 この名前は、ドライバー提出の検索と整理に使うことができます。
注意
別の会社とドライバーを共有する場合、この名前が表示されます。
両方のテスト署名オプションはオフのままにします。
[要求された署名] で、ご自身のドライバー パッケージに含める署名を選択します。
ページ内を下に移動し、[送信] を選択します。
署名プロセスが完了したら、ハードウェア ダッシュボードから署名されたドライバーをダウンロードします。
ドライバーが正しく署名されていることを検証する
次の手順を実行して、ドライバーに正しく署名されていることを確認します。
申請ファイルをダウンロードしたら、ドライバー ファイルを抽出します。
管理者としてコマンド プロンプト ウィンドウを開きます。
次のコマンドを入力して、ドライバーが適切に署名されていることを確認します。
C:\Echo> SignTool verify Echo.Sys
追加の情報を表示し、signtool で複数の署名に基づいてファイル内のすべての署名を確認するには、次のコマンドを入力します。
C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
ドライバーの EKU を確認するには、次の手順を実行します。
エクスプローラーを開き、バイナリ ファイルを探します。 そのファイルを長押し (または右クリック) し、 [プロパティ] を選びます。
[デジタル署名] タブの [署名の一覧] で、示されている項目を選びます。
[詳細]、[証明書の表示] の順に選択します。
[詳細] タブで、[拡張キー使用法] を選択します。
ダッシュ ボードでドライバーが再署名される場合は、次のプロセスが実行されます。
- Microsoft SHA2 埋め込み署名を追加します。
- ドライバーのバイナリが顧客によって独自の証明書を使って埋め込み署名されている場合、それらの署名は上書きされません。
- 新しいカタログ ファイルを作成し、SHA2 Microsoft 証明書を使って署名します。 顧客が提供した既存のカタログは、このカタログに置き換えられます。
Windows 10 でドライバーをテストする
次の手順に従って、サンプル ドライバーをインストールします。
管理者としてコマンド プロンプト ウィンドウを開きます。 ご自身のドライバー パッケージのフォルダーに移動し、次のコマンドを入力します。
C:\Echo> devcon install echo.inf root\ECHO
ドライバーのインストール プロセスで、"ドライバー ソフトウェアの発行元を検証できません" という Windows のセキュリティ ダイアログ ボックスが表示されないことを確認します。
複数のドライバーで申請を作成する
複数のドライバーを同時に申請するには:
次に示すように、ドライバーごとにサブディレクトリを作成します。
サブディレクトリを参照する 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