在零售和生產系統上,Windows 核心只會信任並載入具有生產 WHQL/WHCP 簽章的驅動程式。 若要測試生產階段前驅動程式,驅動程式開發人員必須先啟用 TESTSIGNING
,以便載入非生產驅動程式。
TESTSIGNING
需要停用安全開機,才能在測試和生產環境中呈現差異。
Windows 核心支援載入以 WHQL/WHCP 生產前簽章簽署的前置生產階段驅動程式。 WHQL/WHCP 簽章可透過Microsoft硬體開發人員中心 (HDC) 存取。
先決條件
請從最新版本的 Windows 驅動程式套件(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測試根密鑰。 Microsoft測試金鑰必須包含在安全開機資料庫 (DB) 和安全開機設定原則 (SBCP) 中,才能啟用生產前 WHQL/WHCP 驅動程式簽章的信任。
備註
在配置任何安全開機資料庫時,絕對不要使用 Microsoft 測試密鑰在生產環境中簽署載荷。
布建步驟
在系統的 UEFI 功能表中,如果適用,請停用安全開機並清除安全開機密鑰。 這可讓佈建工具設定測試密鑰,以信任安全開機原則檔案,並重新啟用安全開機。
根據系統架構,從 WDK 下載正確的安全啟動政策 .p7b 檔案及隨附的配置工具 EnableUefiSbTest.exe。 如需布建工具的位置,請參閱 必要條件。
在以系統管理員權限提升的 PowerShell 或終端機實例中執行下列命令,並驗證 PK、KEK、db、dbx 和 OemId 值為空(“找不到”):
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
在提升許可權的 PowerShell 或終端機實例中執行下列命令,將安全開機測試金鑰布建至安全開機資料庫,然後重新啟用安全開機:
EnableUefiSbTest.exe
備註
EnableUefiSbTest.exe 成功執行後,將不會輸出或傳回任何內容。
您可以選擇性地指定
thirdparty
命令,將 Microsoft UEFI CA 憑證與安全開機 DB 中的預設密鑰一起佈建。 這使得可以信任Microsoft UEFI CA 簽署的EFI可執行檔,例如選項 ROM 和非 Windows 開機載入器。EnableUefiSbTest.exe /thirdparty
針對執行桌面型 Windows 的裝置,請先掛接系統的 EFI 磁碟分區,然後在提升許可權的 PowerShell 或終端機實例中執行下列命令,將 Secure Boot 原則 (.p7b) 檔案複製到 S:/EFI/Microsoft/Boot。
mountvol s: /s copy-item <path_to_p7b> S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
備註
因為 Windows 核心需要格式
SecureBootPolicy.p7b
為 的安全開機原則檔案,因此不得修改名稱和檔格式。對於未執行桌面版 Windows 的裝置,請複製對應的
PreProductionPolicy.pol
至\EFI\Microsoft\Boot\Policies
。 然後從\EFI\Microsoft\Boot\Policies
刪除FullDebugPolicy.pol
。重新啟動系統以允許 Windows 核心重新整理原則。 安全開機現在會由布建工具重新啟用並自動配置。 這可以藉由以系統管理員身份重新執行
EnableUefiSbTest.exe /dump
,並確認只有dbx
和OemId
的值是空的(「找不到」)來驗證。系統已準備好驗證生產前 WHQL/WHCP 簽署的驅動程序內容。 重新啟動系統不會影響裝置的狀態,只要未修改安全開機密鑰和安全開機原則檔案。
解除配置步驟
若要取消系統的布建,並退出系統上的預生產簽署信任:
請在具有管理員權限的 PowerShell 或終端機實例中執行下列命令,以從掛載的 EFI 磁碟分區中刪除安全開機原則檔案:
mountvol s: /s rm S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
備註
如果在 HoloLens 2 上執行驗證,也必須從 S:/EFI/Microsoft/Boot/Policies 中移除 .pol 原則檔案。
開機進入系統的 UEFI 功能表,並將 [安全開機金鑰] 重新設定為原廠設定。
重新啟動系統並執行
EnableUefiSbTest.exe /dump
,應該傳回非空值以指示PK
、KEK
、db
和dbx
已返回原廠狀態。備註
建議您在系統上全新安裝 Windows,以解除配置原定用於零售環境的系統。
常見問題
問:EnableUefiSbTest.exe /dump
此命令只會顯示的結果PK
。 發生問題嗎?
一個: 如果此工具是以標準使用者身分執行,而不是以系統管理員身分執行,就會發生這種情況。
問: 命令 EnableUefiSbTest.exe /dump
會傳回我無法辨識的錯誤。 我該怎麼辦?
A: 當安全開機未成功停用且/或尚未清除安全開機密鑰時,工具可能會拋出錯誤。 確認安全開機已停用。