将 X.509 证书添加到 UEFI 安全启动数据库?

将 X.509 证书添加到 UEFI 安全启动数据库?

我最近在一台配有华硕 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>

相关内容