セキュア ブートが有効になっている実稼働前ドライバーをテストする方法

リテール システムと運用システムでは、Windows カーネルは、運用 WHQL/WHCP 署名を持つドライバーのみを信頼して読み込みます。 実稼働前ドライバーをテストするには、ドライバー開発者が非運用ドライバーの読み込みを有効にする TESTSIGNING を有効にする必要があります。 TESTSIGNING では、テスト環境と運用環境に違いを示すために、セキュア ブートを無効にする必要があります。

Windows カーネルは、WHQL/WHCP 実稼働前署名で署名された実稼働前ドライバーの読み込みをサポートしています。 WHQL/WHCP 署名には、Microsoft ハードウェア デベロッパー センター (HDC) からアクセスできます。

前提条件

実稼働前 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 テスト キーを使用してペイロードに運用環境で署名しないでください。

プロビジョニングの手順

  1. システムの UEFI メニューで、セキュア ブートを無効にし、該当する場合はセキュア ブート キーをクリアします。 これにより、プロビジョニング ツールは、セキュア ブート ポリシー ファイルを信頼するようにテスト キーを設定し、セキュア ブートを再度有効にすることができます。

  2. システム アーキテクチャと付属のプロビジョニング ツール ( EnableUefiSbTest.exe) に応じて、適切なセキュア ブート ポリシー .p7b ファイルを WDK からダウンロードします。 プロビジョニング ツールの場所については、「前提条件」を参照してください

  3. 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
    
  4. セキュア ブート テスト キーを Secure Boot db にプロビジョニングし、PowerShell またはターミナルの管理者特権のインスタンスで次のコマンドを実行して、セキュア ブートを再度有効にします。

    EnableUefiSbTest.exe
    

    Note

    EnableUefiSbTest.exeは、正常に実行された後は何も出力または返されません。

    必要に応じて、セキュア ブート DB の既定のキーと共に Microsoft UEFI CA 証明書をプロビジョニングするコマンドを指定 thirdparty します。 これにより、オプション ROM や Windows 以外のブートローダーなどの Microsoft UEFI CA 署名 EFI 実行可能ファイルに対する信頼が可能になります。

    EnableUefiSbTest.exe /thirdparty
    
  5. デスクトップ ベースの 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が必要であるため、名前とファイル形式は変更しないでください。

  6. デスクトップ ベースの Windows を実行していないデバイスの場合は、対応する PreProductionPolicy.pol をコピーします \EFI\Microsoft\Boot\Policies。 次に、次からFullDebugPolicy.polを削除します\EFI\Microsoft\Boot\Policies

  7. システムを再起動して、Windows カーネルがポリシーを更新できるようにします。 セキュア ブートが再び有効になり、プロビジョニング ツールによって自動的にプロビジョニングされるようになりました。 これを検証するには、管理者として EnableUefiSbTest.exe /dump を再実行し、 dbxOemId の値のみが空であることを検証します ("Not Found")。

  8. システムは、実稼働前の WHQL/WHCP 署名付きドライバー のコンテンツを検証する準備ができています。 セキュア ブート キーとセキュア ブート ポリシー ファイルが変更されない限り、システムを再起動してもデバイスの状態には影響しません。

デプロビジョニングの手順

システムのプロビジョニングを解除し、システムでの実稼働前署名信頼をオプトアウトするには、次の手順を実行します。

  1. PowerShell またはターミナルの管理者特権のインスタンスで次のコマンドを実行して、マウントされた EFI パーティションからセキュア ブート ポリシー ファイルを削除します。

    mountvol s: /s
    rm  S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
    

    Note

    検証が HoloLens 2 で実行されている場合は、.pol ポリシー ファイルも S:/EFI/Microsoft/Boot/Policies から 削除する必要があります。

  2. システムの UEFI メニューを起動し、セキュア ブート キーを出荷時の設定に再構成します。

  3. システムを再起動し、 EnableUefiSbTest.exe /dumpを実行します。 PKKEKdb、およびキーが出荷時の状態に戻されたことを示す dbx 値の空でない値を返す必要があります。

    Note

    リテール環境向けのシステムをプロビジョニング解除するには、システムに Windows をクリーンインストールすることをお勧めします。

よく寄せられる質問

Q: EnableUefiSbTest.exe /dump コマンドでは、 PKの結果のみが表示されます。 何かエラーが発生しているのでしょうか?

A: これは、ツールが管理者ではなく標準ユーザーとして実行されている場合に発生します。

Q: EnableUefiSbTest.exe /dump コマンドは、認識できないエラーを返します。 どうすればよいですか。

A: セキュア ブートが正常に無効になっていないか、セキュア ブート キーがクリアされていない場合に、ツールによってエラーがスローされる可能性があります。 セキュアブートが無効になっていることを確認します。