セキュア ブートが有効になっている実稼働前ドライバーをテストする方法
リテール システムと運用システムでは、Windows カーネルは、運用 WHQL/WHCP 署名を持つドライバーのみを信頼して読み込みます。 実稼働前ドライバーをテストするには、ドライバー開発者が非運用ドライバーの読み込みを有効にする TESTSIGNING
を有効にする必要があります。 TESTSIGNING
では、テスト環境と運用環境に違いを示すために、セキュア ブートを無効にする必要があります。
Windows カーネルは、WHQL/WHCP 実稼働前署名で署名された実稼働前ドライバーの読み込みをサポートしています。 WHQL/WHCP 署名には、Microsoft ハードウェア デベロッパー センター (HDC) からアクセスできます。
前提条件
最新バージョンの Windows Driver Kit (WDK) またはダウンロード センターからEnableUefiSbTest.exeをダウンロードします。 EnableUefiSbTest ツールの既定のセットアップ場所は、C:\Program Files (x86)\Windows Kits\10\tools\{arch}\SecureBoot\EnableSB です。
{arch}
は次のいずれかになります{amd64, x86, arm, arm64}
。 ポリシーは、同じ SecureBoot ディレクトリ C:\Program Files (x86)\Windows Kits\10\tools\{arch}\SecureBoot\Policies の下にあります。
実稼働前 WHQL/WHCP 署名のサポートを有効にする
ドライバーが実稼働前に署名されたら、ドライバーをインストールするテスト コンピューターをプロビジョニングする準備が整います。
プロビジョニング ツールとペイロードは、Windows 11 バージョン 22H2 以降で提供されます。
EnableUefiSbTest ツールを使用することをお勧めします。 または、[HLK セキュア ブートの手動テスト] セクション (UefiSecureBootManualTests.zip\ManualTests\certs\test\db_MSFTtestSigningRoot.cer
) から Microsoft Test Root キーを手動でプロビジョニングすることもできます。 実稼働前 WHQL/WHCP ドライバー署名の信頼を有効にするには、Microsoft テスト キーをセキュア ブート データベース (DB) とセキュア ブート構成ポリシー (SBCP) に含める必要があります。
Note
セキュア ブート データベースのいずれかをプロビジョニングする場合は、Microsoft テスト キーを使用してペイロードに運用環境で署名しないでください。
プロビジョニングの手順
システムの UEFI メニューで、セキュア ブートを無効にし、該当する場合はセキュア ブート キーをクリアします。 これにより、プロビジョニング ツールは、セキュア ブート ポリシー ファイルを信頼するようにテスト キーを設定し、セキュア ブートを再度有効にすることができます。
システム アーキテクチャと付属のプロビジョニング ツール ( EnableUefiSbTest.exe) に応じて、適切なセキュア ブート ポリシー .p7b ファイルを WDK からダウンロードします。 プロビジョニング ツールの場所については、「前提条件」を参照してください。
PowerShell またはターミナルの管理者特権のインスタンスで次のコマンドを実行し、PK、KEK、db、dbx、OemId の値が空 ("Not Found") であることを確認します。
EnableUefiSbTest.exe /dump
セキュア ブートが無効になっており、キーが正常にクリアされた場合は、次の出力が必要です。
EnableUefiSbTest.exe /dump Name: PK Not Found Name: KEK Not Found Name: db Not Found Name:dbx Not Found Name: OemId Not Found
セキュア ブート テスト キーを Secure Boot db にプロビジョニングし、PowerShell またはターミナルの管理者特権のインスタンスで次のコマンドを実行して、セキュア ブートを再度有効にします。
EnableUefiSbTest.exe
Note
EnableUefiSbTest.exeは、正常に実行された後は何も出力または返されません。
必要に応じて、セキュア ブート DB の既定のキーと共に Microsoft UEFI CA 証明書をプロビジョニングするコマンドを指定
thirdparty
します。 これにより、オプション ROM や Windows 以外のブートローダーなどの Microsoft UEFI CA 署名 EFI 実行可能ファイルに対する信頼が可能になります。EnableUefiSbTest.exe /thirdparty
デスクトップ ベースの Windows を実行しているデバイスの場合は、PowerShell またはターミナルの管理者特権のインスタンスで次のコマンドを 実行して、システムの EFI パーティションをマウントし、セキュア ブート ポリシー (.p7b) ファイルを介して S:/EFI/Microsoft/Boot にコピーします。
mountvol s: /s copy-item <path_to_p7b> S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
Note
Windows カーネルにはセキュア ブート ポリシー ファイル
SecureBootPolicy.p7b
が必要であるため、名前とファイル形式は変更しないでください。デスクトップ ベースの Windows を実行していないデバイスの場合は、対応する
PreProductionPolicy.pol
をコピーします\EFI\Microsoft\Boot\Policies
。 次に、次からFullDebugPolicy.pol
を削除します\EFI\Microsoft\Boot\Policies
。システムを再起動して、Windows カーネルがポリシーを更新できるようにします。 セキュア ブートが再び有効になり、プロビジョニング ツールによって自動的にプロビジョニングされるようになりました。 これを検証するには、管理者として
EnableUefiSbTest.exe /dump
を再実行し、dbx
とOemId
の値のみが空であることを検証します ("Not Found")。システムは、実稼働前の WHQL/WHCP 署名付きドライバー のコンテンツを検証する準備ができています。 セキュア ブート キーとセキュア ブート ポリシー ファイルが変更されない限り、システムを再起動してもデバイスの状態には影響しません。
デプロビジョニングの手順
システムのプロビジョニングを解除し、システムでの実稼働前署名信頼をオプトアウトするには、次の手順を実行します。
PowerShell またはターミナルの管理者特権のインスタンスで次のコマンドを実行して、マウントされた EFI パーティションからセキュア ブート ポリシー ファイルを削除します。
mountvol s: /s rm S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
Note
検証が HoloLens 2 で実行されている場合は、.pol ポリシー ファイルも S:/EFI/Microsoft/Boot/Policies から 削除する必要があります。
システムの UEFI メニューを起動し、セキュア ブート キーを出荷時の設定に再構成します。
システムを再起動し、
EnableUefiSbTest.exe /dump
を実行します。PK
、KEK
、db
、およびキーが出荷時の状態に戻されたことを示すdbx
値の空でない値を返す必要があります。Note
リテール環境向けのシステムをプロビジョニング解除するには、システムに Windows をクリーンインストールすることをお勧めします。
よく寄せられる質問
Q: EnableUefiSbTest.exe /dump
コマンドでは、 PK
の結果のみが表示されます。 何かエラーが発生しているのでしょうか?
A: これは、ツールが管理者ではなく標準ユーザーとして実行されている場合に発生します。
Q: EnableUefiSbTest.exe /dump
コマンドは、認識できないエラーを返します。 どうすればよいですか。
A: セキュア ブートが正常に無効になっていないか、セキュア ブート キーがクリアされていない場合に、ツールによってエラーがスローされる可能性があります。 セキュアブートが無効になっていることを確認します。