![将 X.509 证书添加到 UEFI 安全启动数据库?](https://linux22.com/image/1417000/%E5%B0%86%20X.509%20%E8%AF%81%E4%B9%A6%E6%B7%BB%E5%8A%A0%E5%88%B0%20UEFI%20%E5%AE%89%E5%85%A8%E5%90%AF%E5%8A%A8%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%9F.png)
我最近在一台配有华硕 Z87-K 主板的定制台式机上安装了 Fedora 20。考虑到一些常见的错误,我为我的 GeForce 630 安装了 NVIDIA 专有驱动程序,并禁用了 nouveau 驱动程序。
正确完成驱动程序安装后,在此过程中使用新生成的密钥对对模块进行签名,创建 x.509 证书并自动放置在
/usr/share/nvidia/certificate.der
。
然而,从那一刻起,计算机无法在启用 UEFI 安全启动选项的情况下启动。当切换到文本模式并运行时nvidia-modprobe
,我发现 NVIDIA 专有模块未加载。
当我在 UEFI 菜单中禁用安全启动时,计算机可以使用已安装的驱动程序顺利启动并运行。
为了避免在非安全模式下启动的缺陷,我想知道将 NVIDIA 模块的 x.509 证书放在哪里以便内核识别它,这样我就不必关闭安全启动。
答案1
您应该能够使用加载证书,MokManager.efi
以便 Shim 识别它,从而被内核接受。我不知道 Fedora 是否设置了 GRUB 以便您可以MokManager.efi
自行启动。如果没有,请尝试启动(禁用安全启动)带有 EFI shell 的 USB 闪存驱动器或重新索引。然后,您应该能够启动MokManager.efi
并加载证书文件。(它需要与MokManager.efi
实用程序存储在同一个磁盘上 - 可能/boot/efi
在 Fedora 内。)
我很确定有一种方法可以从 Linux 内部将证书添加到 NVRAM,这样 Shim 就会注意到它并询问是否应该在下次重新启动时使用它,但我不知道具体是什么方法。大概需要将文件写入目录树中的某个位置/sys/firmware/efi
。
话虽如此,我从来没有亲自做过这件事,因为我没有在任何一台电脑上使用专有视频驱动程序。可以想象,你需要采取一些额外的步骤。
答案2
您可能想要使用 mokutil 来注册密钥。
sudo mokutil --import <der file>
您可以测试密钥是否已注册
mokutil --test-key <der file>