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

リテール システムと運用システムでは、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) に応じて、WDK から正しいセキュア ブート ポリシー .p7b ファイルをダウンロードします。 プロビジョニング ツールの場所については、「前提条件」を参照してください

  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します。空でない値を返す必要があります。この値PKは、 KEKdbdbxキーが出荷時の状態に戻されたことを示す値を返します。

    Note

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

よく寄せられる質問

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

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

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

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