- 生成 capsule。有关脚本和说明,请参阅:https://github.com/quic/cbsp-boot-utilities/tree/main/uefi_capsule_generation。
- 在 https://github.com/quic/cbsp-boot-utilities.git 获取
cbsp-boot-utilities/uefi_capsule_generation/目录的 git clone 链接。
签署 capsule
要按照 Tianocore GitHub 中的说明签署基于 capsule 的系统固件更新,请执行以下步骤:- 生成签名密钥:
- 使用 OpenSSL 命令行实用程序创建新的自签名 X.509 证书链。这包括生成私钥和相应的公共证书。
- 系统使用私钥签署固件更新 capsule,UEFI 固件使用公共证书验证签名。
- 签署固件更新 capsule:
- 使用签名密钥签署固件更新 capsule。此过程对 capsule 进行身份验证,并确保其未被篡改。
- 签名过程包括创建固件更新负载的哈希值,然后使用私钥加密该哈希值以创建数字签名。
- 将这些证书放在名为 `Certificates’ 的文件夹中。该文件夹中的示例文件可能包括
QcFMPCert.pem、QcFMPRoot.pub.pem和QcFMPSub.pub.pem。
- 验证 capsule:
- UEFI 固件使用公共证书验证 capsule 上的数字签名。如果签名有效且与受信任的证书匹配,固件更新过程将继续进行。
- 启动 devicetree(DT)在以下节点提供根证书——
QcFMPRoot.cer或NewRoot.cer:/sw/uefi/uefiplat/QcCapsuleRootCert。 - 该启动 DT 是
xbl_config.elf二进制文件的一部分,可以使用 QDTE 工具进行更新。 - 只有当根证书已存在于设备上(具体而言,位于 xbl_config.elf 中的启动 DT 节点内)时,才能执行 capsule 更新。
- 在启动任何 capsule 更新过程之前,请确保证书已正确嵌入二进制文件(xbl_config.elf)中并在设备上可用。

