使用 Shim 和 grub 自定義簽名的 Centos 7 PXE Secureboot:核心簽名無效
正如標題所暗示的,我正在嘗試設置一個使用 PXE 引導的系統,以使用自定義簽名密鑰引導到 CentOS7。
grub.cfg
這個過程改編自幾個指南,但它的要點是我使用 grubinitramfs.gz
從tftpserver
. 這些通過 GPG 簽名進行驗證。但是,後來我收到錯誤消息,即我的 linux 核心未正確簽名,而它是使用我自己的 db 密鑰簽名以進行安全啟動的。密鑰應正確安裝在 UEFI 中,因為
grub
EFI 二進製文件也已簽名,並且還應通過 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 簽名啟動核心,以便在想要完全控制時將其刪除。