安全启动 - 如果 BIOS 没有这样的选项,如何将自定义证书附加到数据库?

安全启动 - 如果 BIOS 没有这样的选项,如何将自定义证书附加到数据库?

我有一台 HP 245G7 笔记本电脑。BIOS 非常基础,似乎没有任何选项可以将我自己的自定义证书附加到安全启动数据库。

如果这个模型有选项的话我很想知道。

我读到过只有 HP 商务笔记本电脑才有这样的选项。当我致电 HP 支持时,他们说 HP245G7 是商务笔记本电脑。鉴于此,并假设 BIOS 没有这样的选项,有什么替代方法可以将我自己的证书(.cer 文件)附加到 db 数据库?

使用 powershell 命令 New-SelfSignedCertificate 在 Windows 上创建证书

在此处输入图片描述

答案1

所有固件技术上使这成为可能,他们可能只是在设置屏幕中没有一个简单的用户界面,需要你在设置模式下自己创建 ESL,但该模式必须在 x86 上可用。

我稍后会尝试对此进行扩展,但一般来说你会:

  1. 将安全启动功能切换为“设置模式”。这可以作为专用选项完成,也可以通过固件清除平台密钥 (PK)。

    当系统处于设置模式时,您将能够从正在运行的操作系统中更新数据库和 KEK,而无需与 KEK 或 PK 对应的密钥。例如,可以使用 Linux 系统或从 EFI Shell 运行的某些工具来管理数据库。

    我有一台戴尔系统的笔记,其中我必须将此作为两个单独的步骤来执行:首先通过固件设置将系统切换到“设置模式”,然后启动到 Linux 并手动移除PK内容。

    chattr -i /sys/firmware/efi/efivars/PK-8be4df61-93ca-11d2-aa0d-00e098032b8c
    efi-updatevar -k PlatformKey.key -d 0 PK
    
  2. 从“dbDefault”和“KEKDefault”EFI 变量中获取原始 db 和 KEK 列表的副本,这些变量是安全启动实现所必需的。

    注意:我以前给戴尔的笔记说这不是必需的,因为我有激活“设置模式”的特定选项,而不需要使用强力的“清除所有键”选项,所以 db 和 KEK 保留了它们的原始值,我只需将其附加到它们即可。

    但是,如果您最终清除了所有键(由于 PK 为空,这也会导致设置模式),这仍然是一个有用的选项。

  3. 从 dbDefault 加上您的自定义 db 证书创建一个自定义签名列表 (.esl),并将其添加到变量中db。同样,将 KEKDefault 加上您的自定义 KEK 证书添加到 中KEK

    我在创建此值的笔记中发现cert-to-efi-sig-list需要sign-efi-sig-list使用,然后efi-updatevar导入 ot。

    但是,也可以将证书逐个附加到现有的“db”或“KEK”内容中:

    chattr -i /sys/firmware/efi/efivars/KEK-8be4df61-93ca-11d2-aa0d-00e098032b8c
    efi-updatevar -k MyPlatformKey.key -g 77fa9abd-0359-4d32-bd60-28f4e78f784b -a -c KEK/MS_KEK_CA_2011.der KEK
    efi-updatevar -k MyPlatformKey.key -g $(uuidgen) -a -c MyKeyExchangeKey.crt KEK
    
    chattr -i /sys/firmware/efi/efivars/db-d719b2cb-3d3a-4596-a3bc-dad00e67656f
    efi-updatevar -k MyKeyExchangeKey.key -a -c db/MS_UEFI_CA.der db
    efi-updatevar -k MyKeyExchangeKey.key -a -c db/MS_Windows_PCA.der db
    efi-updatevar -k MyKeyExchangeKey.key -a -c MySigningKey.crt db
    

    最后,无论是原始平台密钥或者您的自定义模式PK,此时系统将退出设置模式,进入正常用户模式。

答案2

在 Windows 上,可以使用 PowerShell 来操作 UEFI 证书,其中 BIOS 没有所需的用户界面。

在HP手册中找到以下方法 安全启动自定义指南。这需要以管理员身份运行 PowerShell。

该文档包含有关 PowerShell 命令以及有关使用 Windowssigntool.exe准备安装密钥的极其详细的描述。

该文件本身太过冗长,无法包含在答案中。我仅在下面总结其第 2 章所需的步骤:

2 Setting up a customized Secure Boot environment
2.1 Backup existing Secure Boot configuration
2.2 Place your HP PC in Secure Boot setup mode
2.3 Obtain PK and KEK public keys
2.4 Self-signing certificates
2.4.1 Generate a new PK
2.4.2 Generate a new KEK
2.5 Install the new PK
2.5.1 PK: Create a valid SetVariable() package
2.5.2 Import PK using Windows tools
2.6 Install the new PK—signed KEK
2.6.1 KEK: Create a valid SetVariable() package
2.6.2 Import KEK Using Windows Tools
2.7 Install the New KEK—signed DB and DBX
2.8 Enable Secure Boot Once More
2.9 Add Additional Certificates to DB or DBX

相关内容