Answers:
是的,但您必须拥有安全启动密钥。首先,请注意安全启动公钥至少可以采用三种形式:
.cer
/ .der
files - 大多数UEFI实现以及与Shim配对的MokManager工具使用这些文件。.crt
- 大多数Linux安全工具本身都使用这些文件,例如sbsigntool
和sbverify
。.esl
- 这些文件将多个键组合到一个文件中。(其他每个文件都包含一个密钥。)如果使用固件用户界面或KeyTool来保存密钥,则生成的文件将采用此格式。如果您已使用MokManager安装了自己的机器所有者密钥(MOK),则应将文件放在.cer
/ .der
form中。如果你想测试二进制文件在用另一个密钥启动时是否有效(例如用于签署Ubuntu或Fedora版本的GRUB的密钥),你将不得不获取它。为方便起见,我用rEFInd收集了几个; 你可以在这里零碎地下载它们。如果您已完全控制系统上的安全启动,则您应该已经拥有自己创建的密钥。
要验证二进制文件,您必须具有.crt
表单中的密钥。如果你有一个密钥.der
或.cer
表单,你可以转换它:
openssl x509 -in mykey.cer -inform der -out mykey.crt
然后,您可以检查二进制文件是否已正确签名:
sbverify --cert mykey.crt binary.efi
结果应该是阅读消息Signature verification OK
或Signature verification failed
。
请注意,某些UEFI甚至无法启动正确签名的二进制文件。这似乎是随机的; 二进制A将启动OK,而使用相同密钥签名的二进制B将失败。我相信这是受影响的UEFI中的一个错误,但我没有详细调查过。AFAIK,它不会影响通过Shim验证的二进制文件,但它可以影响Shim本身或没有Shim帮助启动的二进制文件。