我正在关注有关如何在 Linux 上注册自己的安全启动密钥的指南但是我使用的平台是 Windows,目前我仍在尝试将 OpenSSL 生成的证书转换为 BIOS 可以接受的格式。
特别是这两个工具仅在 Linux 上可用:
签名 EFI 签名列表- 作为 EFI 签名列表的安全变量签名工具
cert-to-efi-sig 列表 - 将 OpenSSL 证书转换为 EFI 签名列表的工具
我可以使用 OpenSSL 生成 OpenSSL 证书,但在 Windows 上找不到任何等效工具,让我将 OpenSSL 生成的证书 (.crt) 转换为 EFI 签名列表 (.esl)。或者将 EFI 签名列表 (.esl) 转换为经过身份验证的签名文件 (.auth)。
这Github仅适用于 Linux 的 EFITools 存储库似乎也损坏了。
有人做过这个吗?非常感谢帮助
答案1
根据HP“安全启动自定义指南”,Windows 10 PowerShell 中存在等效命令(示例从 PDF 中原样复制):
创建 EFI 签名列表:
Format-SecureBootUEFI
格式-SecureBootUEFI -名称 PK ` -签名所有者 DEF16466-F946-4E71-BE22-CF8B1B7B36A0 ` -内容文件路径 .\PK_SigList.bin ` -FormatWithCert` -证书.\PK.CER ` -SignableFilePath .\PK_SigList_Serialization_for_PK.bin ` -时间 2016-02-01T13:30:00Z
签署 EFI 签名列表:(
signtool
是的,UEFI 安全启动只是 Microsoft Authenticode)signtool.exe 签名 /fd sha256 /p7 .\ /p7co 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /a /f .\PK.PFX /p <密码> PK_SigList_Serialization_for_PK.bin
创建一个经过验证的 SetVariable() 包作为文件:
Set-SecureBootUEFI
设置 SecureBootUEFI -名称 PK ` -时间 2016-02-01T13:30:00Z ` -内容文件路径 .\PK_SigList.bin ` -签名文件路径。\PK_SigList_Serialization_for_PK.bin.p7` -输出文件路径 .\PK_NewKey_Import_PK.bin
向 UEFI 发送经过身份验证的 SetVariable() 调用:
Set-SecureBootUEFI
设置 SecureBootUEFI -名称 PK ` -时间 2016-02-01T13:30:00Z ` -内容文件路径 .\PK_SigList.bin ` -签名文件路径 .\PK_SigList_Serialization_for_PK.bin.p7
我还没有测试过这个。
答案2
即使有 grawity 的回答,我也不知道该怎么做。所以我做的是使用虚拟机并安装 Ubuntu,然后再使用 Linux 指南,这要容易得多。我最终设法在 BIOS 上注册了密钥。