署名付きカーネルモジュール - 「信頼できるキーで署名されていません」

署名付きカーネルモジュール - 「信頼できるキーで署名されていません」

質問:

署名されたカーネルモジュールを使用しようとしましたが、コマンドは失敗しますinsmod

PKCS#7 signature not signed with a trusted key

Linuxの起動中に関連するエラーメッセージが表示されることがあります。

[    3.342888] Loading compiled-in X.509 certificates
[    3.391774] Problem loading in-kernel X.509 certificate (-129)

このコマンドは以下cat /proc/keysを表示します。.builtin_trusted_keys: empty

設定:

4.9.x カーネルは、次の defconfig オプションを使用してコンパイルされます。

...
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_FORCE=y
CONFIG_MODULE_SIG_SHA256=y
CONFIG_MODULE_SIG_HASH="sha256"
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_KEYS_DEBUG_PROC_KEYS=y
CONFIG_PERSISTENT_KEYRINGS=y
CONFIG_ENCRYPTED_KEYS=y
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_PATH=y
CONFIG_HARDENED_USERCOPY=y
CONFIG_SECURITY_SMACK=y
CONFIG_SECURITY_SMACK_BRINGUP=y
CONFIG_DEFAULT_SECURITY_DAC=y
...

モジュールは次のコマンドを使用して署名されます。 sign-file sha256 certs/signing_key.pem certs/signing_key.x509 <.ko>

コメント:

カーネルでX.509証明書のロードバグを修正する必要があると仮定していますが、これを行う方法がまだ見つかりませんでした。カーネルのコンパイル中に生成されたファイルがcerts/signing_key.pemカーネルにラップされると思いましたが/proc/keys。キー。誰でも提案があれば大変感謝します。

まだ進展していないnvidiaドライバとUbuntu / Fedoraの投稿を見つけました。例: PKCS#7署名が信頼できる鍵で署名されていません。

ベストアンサー1

カーネルをコンパイルするには、signed_key.*ファイルが "certs"サブディレクトリではなく、カーネルソースツリーのデフォルトディレクトリにある必要があると思います。コンパイルプロセスでは、標準モジュールに自動的に署名する必要があり、サードパーティのモジュールのみを手動で署名する必要があります。

さらに、署名付きモジュールを含む4.9 *カーネルのコンパイルに使用した以前のスクリプトには、DER形式の証明書ファイルがありました。たぶん必要ですか?

カーネル 4.14 以降では、プロセスが若干異なります。証明書ファイルのパス名を指定するカーネル構成オプションがあります。

おすすめ記事