web-dev-qa-db-ja.com

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

Tmpfsでカーネルを構築してから、再起動しました。

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

NO SIGN [M] XXXX.ko

どうすれば署名できますか? rpmbuildの間に生成されたキーペアはすでに失われていると思います

5
daisy

これは驚くほどドキュメントに欠けていました。 RHEL6カーネルドキュメントの一部であるこのファイル module-signing.txt を見つけました。このドキュメントでは、カーネルビルドの一部としてすべてのモジュールに署名することを前提として、署名キーを生成する方法を示します。

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の記事「 Signed Kernel Modules 」には、これを行う方法の詳細と手順がいくつかありますが、ユーザースペースツールが見つかりませんでした。extract_pkeyおよびmodが参照します。

あなたは周りを覗き見したいと思うかもしれません Greg Kroahのサイト 、彼のプレゼンテーションの1つで何か役に立つものを見つけるかもしれません。

参考文献

9
slm

カーネルソースディレクトリに移動し、(例)を実行します。

./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"
0
P Royo