內核編譯後簽署模組

內核編譯後簽署模組

我在 tmpfs 中建立了一個內核,然後重新啟動。

現在,當我編譯第 3 方模組時,我看到一條訊息,

NO SIGN [M] XXXX.ko

我怎麼才能得到它的簽名?我猜期間產生的金鑰對rpmbuild已經遺失了

答案1

令人驚訝的是,缺乏文件。我找到了這個文件,模組簽名.txt,它是 RHEL6 核心文件的一部分。在本文檔中,它展示瞭如何產生簽名金鑰,假設您想要將所有模組簽名作為核心建置的一部分:

cat >genkey <<EOF
%pubring kernel.pub
%secring kernel.sec
Key-Type: DSA
Key-Length: 512
Name-Real: A. N. Other
Name-Comment: Kernel Module GPG key
%commit
EOF
make scripts/bin2c
gpg --homedir . --batch --gen-key genkey
gpg --homedir . --export --keyring kernel.pub keyname |
 scripts/bin2c ksign_def_public_key __initdata >crypto/signature/key.h

還有 Linux Journal 的文章,標題為:簽署的核心模組有一些關於如何執行此操作的詳細資訊和步驟,但我找不到用戶空間工具extract_pkey及其mod引用。

你可能想四處看看格雷格·克羅的網站,您可能會在他的演講中發現一些有用的東西。

參考

答案2

轉到內核來源目錄並執行以下操作(範例):

./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko

CONFIG_MODULE_SIG透過開啟 .config 並在配置值中讀取它來檢查核心正在使用的摘要演算法是什麼:

CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"

相關內容