Condividi tramite


UEFI 提交申请的预提交测试

1 简介

本博文提供了关于如何在将 UEFI 模块提交给 Microsoft UEFI CA 进行签名之前,对它们进行测试签名和验证的指南。在使用 Windows 开发人员中心硬件仪表板签名 UEFI 驱动程序或应用之前,您应根据此处提供的指南对您的 UEFI 驱动程序或应用进行测试签名和验证。这样做可以帮助您预先确定是否您的 UEFI 驱动程序或应用可以签名,以及是否其在签名之后可以正常运行。

在提交给 Microsoft UEFI CA 进行签名之前,对您的产品进行测试可以降低重复提交的可能性,从而 Windows 开发人员中心硬件仪表板可以提供合理的签名周转时间,这是因为每个申请都需要占用仪表板中大量的审核资源。

注意:请不要向仪表板提交已进行测试签名的 UEFI 模块。提交的已签名模块将不会被签名。

2 对 UEFI 模块进行测试签名和验证

在提交给 Microsoft UEFI CA 进行签名之前,请按照以下步骤使用和测试您的 UEFI 产品:

1.使用您的证书(或测试证书)签名您的产品。  
2.将该证书添加到 SecureBoot 数据库中。

3 使用 Windows HCK 对 UEFI 模块进行测试签名和验证

您可以通过以下步骤在运行 Windows 的设备上使用 Windows HCK:

1.准备测试系统。

2.对 UEFI 模块进行测试签名。

3.将“Lost”测试证书安装到允许安全引导的数据库中。

4.验证以确保已进行测试签名的 UEFI 模块可以成功地加载和运行

3.1 准备测试系统

若要安装测试证书,包括“Lost CA”到 UEFI 的安全引导系统,以它来测试被测试签名过的 UEFI 模块,请遵循以下步骤:

1.获取一个可进行 UEFI 安全引导的系统以进行测试。固件应符合 UEFI 2.3.1 勘误表 C 或更高版本。

2.在 BIOS 配置中,启用安全引导自定义模式,并清除所有安全引导密钥和证书。注意一些固件会忽略某些图像路径(例如可选 ROM)的身份验证。如果您正在测试这些图像路径,则应重新启用该模式。

3.将 UefiSecureBootManualTests.zip 解压缩至 U 盘。(此文件已附加到本博文中。)如果您已安装硬件认证工具包,该文件也位于 C:\Program Files (x86)\Windows Kits \8.0\Hardware Certification Kit\Tests\amd64\secureboot\UefiSecureBootManualTests.zip 中。

4.在测试系统中,引导到 Windows,以管理员身份启动 Powershell,并执行 Set-ExecutionPolicy Bypass –force

5.执行 ManualTests\tests\00-EnableSecureBoot\EnableSecureBoot.ps1 并重新引导系统。这样做可允许使用测试 KEK 实现安全引导,该测试 KEK 之后将用于将“Lost”测试密钥安装到数据库中。

3.2 对 UEFI 模块进行测试签名

请查看 ManualTests\generate\TestCerts\Lost\signApps.bat 中的示例,以了解如何使用 Lost 证书链对 UEFI 模块进行签名:

· 您需要将您的系统时钟设置回至 2012 年 1 月 1 日,以使用 Lost 证书 C:\WINDOWS\system32>date 1-1-12 进行签名。

· 您可能还需要将 Lost*.cer 导入到您的证书存储区。要完成该操作,请在文件资源管理器中转到 ManualTests\generate\TestCerts\Lost\,右键单击每个 .cer 文件,然后单击安装

· 获得 signtool.exe(作为 Windows SDK 的一部分提供)。

· 运行 signtool.exe sign /fd sha256 /a /f “ManualTests\generate\TestCerts\Lost\Lost.pfx” <your_module.efi>。

我们建议您使用运行 Windows 8 或 Windows 8.1 的计算机进行签名。如果使用的系统正在运行 Windows Vista 或先前的 Windows 操作系统,则您需要在安装 signtool.exe 的 SDK 目录下运行该程序。在这些版本的操作系统中,signtool.exe 依赖于该 SDK 目录下的清单和 DLL 来使 /fd 选项正常运行。

验证以确保安全引导已启用:当您完成上述“准备测试系统”中的步骤之后,安全引导应已启用,但 Lost 密钥还尚未安装到数据库中。如果您尝试运行已进行测试签名的 UEFI 驱动程序或应用,则其将无法执行。一些 BIOS 系统会显示警告消息,而其他系统将自行终止。如果执行受阻,安全引导将针对您的模块加载路径正确启用。如果已进行测试签名的 UEFI 模块运行,则安全引导将无法正确启用。

3.3 将 Lost 测试证书安装到允许安全引导的数据库中

以管理员身份打开 PowerShell,并运行以下命令:

ManualTests\tests\01-AllowNewCertificate\append_LostCA_db.ps1

 

该操作会将“Lost”测试证书链添加到允许安全引导的数据库中。您可以通过在 UEFI shell 环境下,尝试使用 HCK 运行 UEFI 测试模块(例如,ManualTests\apps\<ARCH>\pressanykey1.efi)来验证以确保系统配置正确。它将显示测试名称,并提示您按键盘上的任意键。

3.4 验证以确保已进行测试签名的 UEFI 模块可以成功地加载和执行

在将安全引导系统配置为信任测试证书,并且要测试的 UEFI 模块被测试证书签名之后,您即可以开始测试。安装 UEFI 模块、重新引导并确定是否模块可以成功地加载和执行。您可以通过将硬件的 UEFI 驱动程序安装到您的可选 ROM,或者通过 DRIVER#### UEFI 变量来测试硬件的 UEFI 驱动程序。

4 使用其他工具

以下是一些可能有用的链接:

Sourceforge - SecurityPkg

签名 UEFI 应用程序和驱动程序以进行 UEFI 安全引导

但是,您必须清除 BIOS 中的安全引导,然后引导至 Linux 以运行 Linux 工具,或者您必须使用包含 MokManager UI 的填充码(允许您在系统处于安装模式时设置数据库)。

UefiSecureBootManualTests.zip

Comments

  • Anonymous
    October 13, 2014
    The comment has been removed