Centos

使用 Shim 和 grub 自定義簽名的 Centos 7 PXE Secureboot:核心簽名無效

  • February 23, 2021

正如標題所暗示的,我正在嘗試設置一個使用 PXE 引導的系統,以使用自定義簽名密鑰引導到 CentOS7。grub.cfg這個過程改編自幾個指南,但它的要點是我使用 grubinitramfs.gztftpserver. 這些通過 GPG 簽名進行驗證。

但是,後來我收到錯誤消息,即我的 linux 核心未正確簽名,而它是使用我自己的 db 密鑰簽名以進行安全啟動的。密鑰應正確安裝在 UEFI 中,因為grubEFI 二進製文件也已簽名,並且還應通過 Secureboot 進行驗證。此外,我還通過grub命令行檢查了 GPG 驗證是否成功,確實如此。

在此之後,我在網上閱讀了一些文章並得出結論,我應該使用 shim 作為第一階段引導載入程序(並使用相同的 DB 密鑰對其進行簽名)。所以從 Centos vm 複製它並將 DHCP 伺服器指向 shim。問題仍然存在,因為它給出了相同的錯誤消息,但現在它也給出了一個位置:

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

我似乎找不到在 grub 中負責的文件,因為它可能是不同的版本。我的搜尋使我找到了這篇redhat 文章

然而,這篇文章是在付費牆後面……我不是要求訪問這篇文章(我不確定它是否被允許),因為它可能是一個完全不同的問題。我也嘗試shim自己建構,在建構過程中提供 DER 加密密鑰,但這似乎沒有任何改變。

我也是新手shim,我不確定機器操作員密鑰 (MOK) 的使用是否是強制性的,或者僅使用 DB 密鑰對其進行簽名是否就足夠了。

你們中有人對我有任何指示嗎?謝謝

我解決了。所以我的問題是我不明白如何shim手動部署密鑰,因為大多數方法在他們自己的系統上使用 mokmanager。此方法不適用於 PXE,因為您想從另一個系統引導。在嘗試了不同的方法並查看了原始碼之後,我在arch wikishim上找到了這個頁面,它是關於安全引導的。這個頁面最初並沒有引起我的注意,因為它沒有提到. 我想用一個鍵來更容易更新。那裡有一句話說您可以將-encoded 公鑰複製到文件系統,通常使用 EFI 分區。PXE``shim``DER``FAT

因此,最後我使用了shim從伺服器系統複製的二進製文件PXE,然後使用儲存在 EFI 分區中的公鑰來驗證 linux 核心和grub二進製文件。可能還需要檢查您是否可以使用 Microsoft/Windows/CentOS 簽名啟動核心,以便在想要完全控制時將其刪除。

引用自:https://unix.stackexchange.com/questions/635332