我有一台装有 Windows 8.1 64 位操作系统的华硕 X200MA 笔记本电脑。我已将 shellx64.efi 设置为在安全启动下运行。文件使用我自己的密钥(使用 openssl 创建)签名,当证书数据库中附加 .cer 格式的公钥时,它可以正常运行。UEFI 设置选项也接受 .crt 证书格式,但 shellx64.efi 无法运行。
就公钥证书而言,.crt 和 .cer 格式之间有什么区别?为什么使用 .crt 证书时安全启动 efi 执行会失败,而使用 .cer 却可以正常运行?
UEFI 安全启动设置内联帮助提到它可以接受公钥证书作为 EFI 签名列表/ CERT X.509(der 编码)/ CERT RSA2048(bin)或 CERT SHA256(bin)格式。
谢谢。
答案1
没有区别——这两个扩展实际上都不是定义表示任何特定的含义,而且大多数时候它们表示相同的含义。
X.509 证书只有一种“主要”存储格式,即分布式能源。但它可以是 Base64 编码(又称 PEM 编码)或不是(原始 DER)。文件.crt
实际上可以是任何一个。
因此,首先查看文件的内容。如果文件以“ -----BEGIN CERTIFICATE
”开头,则表示您拥有一个 PEM 编码的 DER 文件。如果文件包含原始二进制数据,则很可能表示您拥有一个原始 DER 文件。
(有时多个 X.509 证书被打包到某种 PKCS#7 文件中,但它几乎总是有一个.p7b
或.pkcs7
或某物与扩展类似。)