カーネルコンパイル後にモジュールに署名する

カーネルコンパイル後にモジュールに署名する

tmpfs でカーネルを構築し、再起動しました。

サードパーティのモジュールをコンパイルすると、次のようなメッセージが表示されます。

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_pkeymodそれが参照するものが見つかりませんでした。

ちょっと覗いてみるのもいいかもしれないグレッグ・クロアのサイト、彼のプレゼンテーションの 1 つに何か役に立つものが見つかるかもしれません。

参考文献

答え2

カーネル ソース ディレクトリに移動して、次の操作を実行します (例):

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

.config を開いて構成値を読み取ることで、カーネルが使用しているダイジェスト アルゴリズムを確認しますCONFIG_MODULE_SIG

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

関連情報