web-dev-qa-db-ja.com

OpenSSL署名ファイルsigning_key.pemがカーネルモジュールの読み込み中にエラーを引き起こさない

カーネルモジュールのロード/インストール中に問題が発生しました。カーネルモジュールは正常にビルドされますが、module_installを作成しようとすると、カーネルがロードされないようです。以下のエラーメッセージが残ります:-

At main.c:158:
    - SSL error:02001002:system library:fopen:No such file or directory: bss_file.c:175
    - SSL error:2006D080:BIO routines:BIO_new_file:no such file: bss_file.c:178 sign-file: certs/signing_key.pem: No such file or directory
    DEPMOD 4.10.0-20-generic

私はこの問題について読み、カーネルが適切に署名されたモジュールのみのロードを開始したことを認識しました。システムのカーネルソースディレクトリ/usr/src/<linux version>/certssigning_key.pem秘密鍵ファイルがないことがわかりました。このエラーが発生したためです。

私は何をすべきか ? signing_key.pemファイルを手動で生成して、それをさらに使用できますか?そうするためのいくつかの良い方法は何でしょうか? openssl.cnfを使用して秘密鍵/証明書ファイルを生成すると、この点で役立ちますか?または、署名されたモジュールをまったく使用せずに、検証なしでそのままモジュールをロードしてみますか?

buntu 17.04 with kernel 4.10.0-20-genericを使用しています。

6

コンパイルしているLinuxカーネルのルートフォルダーで、certsフォルダーに移動して実行します。

openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem

ここで、x509.genkeyは次の内容のファイルです。

[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
Prompt = no
string_mask = utf8only
x509_extensions = myexts

[ req_distinguished_name ]
CN = Modules

[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid

参照: https://wiki.gentoo.org/wiki/Signed_kernel_module_support

オプション2は、構成でモジュールの自動署名を無効にするmake menuconfigまたはmake xconfig

4
cryptoboy