使用 Shim 和 grub 自定义签名的 Centos 7 PXE Secureboot:内核签名无效

使用 Shim 和 grub 自定义签名的 Centos 7 PXE Secureboot:内核签名无效

正如标题所示,我正在尝试设置一个系统,该系统使用 PXE 引导通过自定义签名密钥引导到 CentOS7。这个过程改编自多个指南grub.cfg,但其要点是我使用 grubinitramfs.gztftpserver.这些均通过 GPG 签名进行验证。

但是后来我收到错误,我的 Linux 内核未正确签名,而它是用我自己的数据库密钥签名的以进行安全启动。密钥应正确安装在 UEFI 中,因为grubEFI 二进制文件也经过签名,并且还应通过 secureboot 进行验证。此外,我还通过命令行检查了 GPG 验证是否成功grub,确实如此。

之后,我在网上阅读了一些文章,得出的结论是我应该使用 shim 作为第一阶段引导加载程序(并使用相同的数据库密钥对其进行签名)。因此,从 Centos 虚拟机复制它并将 DHCP 服务器指向 shim。问题仍然存在,因为它给出了相同的错误消息,但现在它还给出了位置:

error: ../../grub-core/loader/i386/efi/linux.c:215:/vmlinuz has invalid signature.

我似乎找不到 grub 中负责的文件,因为它可能是不同的版本。我的搜索让我找到了这个红帽文章

然而这篇文章是在付费墙后面......我不是要求访问该文章(我不确定是否允许),因为这可能是一个完全不同的问题。我还尝试shim自行构建,在构建过程中提供 DER 加密密钥,但这似乎没有任何改变。

我也是新手shim,不确定机器操作员密钥 (MOK) 的使用是否是强制性的,或者仅使用 DB 密钥对其进行签名是否就足够了。

你们有人给我指点吗?谢谢

答案1

我还尝试构建一个 PXE 环境,我想在其中通过 PXE 启动 CentOS、Clonezilla-live 和其他操作系统,并让客户端启用安全启动。

我用过这个指南 https://docs.centos.org/en-US/8-docs/advanced-install/ assembly_preparing-for-a-network-install/

因此,当我启动 CentOS 时,当我尝试启动 clonezilla 时,它工作得很好,它给出: /Tftppath/clonezilla/vmlinuz 有无效签名

我想更好地了解自签名 shim、grub 和内核的过程,以便我可以安全启动各种操作系统。

您能否详细说明一下您遵循的流程?谢谢!!

答案2

我解决了。所以我的问题是我不明白如何手动部署密钥shim,因为大多数方法都在自己的系统上使用 mokmanager。此方法不适用于 PXE,因为您想从另一个系统引导。在尝试了不同的事情以及查看shim源代码之后,我在拱门维基,这是关于 secureboot 的。该页面最初没有引起我的注意,因为它没有提及PXE.我想使用shim密钥来更轻松地更新。那里有一句话说你可以将DER编码的公钥复制到FAT文件系统,通常使用EFI分区。

因此,最终我使用了shimPXE服务器系统复制的二进制文件,然后使用存储在 EFI 分区中的公钥来验证 Linux 内核和grub二进制文件。可能还需要检查是否可以使用 Microsoft/Windows/CentOS 签名启动内核,因此如果您想要完全控制,可以将其删除。

相关内容