时间认证 EFI 变量

时间认证 EFI 变量

我正在设置自定义安全启动密钥华硕 Z87I-Deluxe主板。在我设置了安全启动的其他计算机上,我可以通过文件系统将 PK、KEK 和 DB 密钥写入 EFI 变量,/sys/firmware/efi/efivars或者我可以通过 BIOS 菜单加载它们。我一直使用 DER 编码的 x509 证书。

在此主板上,我能够以两种方式写入 PK、KEK 和 DB 密钥,并在重新启动后读回变量。但是,计算机不会启动已签名的 UEFI 映像。它不会给出任何错误,只是每次您选择启动设备时都会返回 UEFI 菜单。我已成功验证了 UEFI 签名sbverify


$ for file in PK KEK DB; do                                                                                                     
    sudo openssl x509 -inform DER -in /root/secure-boot/$file.cer -outform PEM \
      | sudo openssl verify -CAfile /root/secure-boot/$file.crt
  done
stdin: OK
stdin: OK
stdin: OK

$ efibootmgr --verbose
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001,0002,0003
Boot0000* linux HD(1,GPT,12684b61-8989-4df2-bc61-c2d7c6d640d0,0x800,0x64001)/File(\EFI\linux.efi)


$ sudo sbverify --cert=/root/secure-boot/DB.crt /boot/EFI/linux.efi
warning: data remaining[24749608 vs 24759224]: gaps between PE/COFF sections?
Signature verification OK

用户手册对于 Z87I,提到通过 BIOS 菜单加载变量时,必须将它们格式化为“带有基于时间的认证变量“(我猜是第 8.2.2 节?)

我从未见过其他 BIOS 需要这样的东西,而且我也不知道有任何软件可以生成所需的格式。

我的解释正确吗?我尝试直接写入 DER 和 PEM 文件,但没有成功。

相关内容