Windows - 转换 OpenSSL 生成的证书

Windows - 转换 OpenSSL 生成的证书

我正在关注有关如何在 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 上注册了密钥。

相关内容