加载内核模块时,没有 OpenSSL 签名文件signing_key.pem 会导致错误

Arn*_*ita 8 linux ssl kernel ubuntu kernel-module

我在加载/安装内核模块时遇到问题。内核模块成功构建,但是每当我尝试进行 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
Run Code Online (Sandbox Code Playgroud)

我已经阅读了这个问题,并意识到内核现在已经开始只加载正确签名的模块。我发现/usr/src/<linux version>/certs我系统中的内核源目录没有signing_key.pem私钥文件,因此我看到了这个错误。

我该怎么办 ?我可以手动生成一个signing_key.pem文件并进一步使用它吗?有什么好的方法可以这样做?openssl.cnf在这方面,使用生成私钥/证书文件对我有帮助吗?或者我应该完全避免使用签名模块并尝试在没有任何验证的情况下加载模块?

我将Ubuntu 17.04 与内核 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
Run Code Online (Sandbox Code Playgroud)

其中 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
Run Code Online (Sandbox Code Playgroud)

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

选项 2,是在配置中禁用模块的自动签名make menuconfigmake xconfig