Отсутствие файла подписи OpenSSL signature_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>/certs
в моей системе нет signing_key.pem
файл закрытого ключа, из-за которого я вижу эту ошибку.
Что я должен делать? Могу ли я вручную сгенерировать signing_key.pem
файл и использовать его дальше? Какие были бы хорошие методы для этого? Будет ли генерировать закрытый ключ / файл сертификата, используя openssl.cnf
помочь мне в этом отношении? Или я должен вообще избегать использования подписанных модулей и пытаться загружать модули без проверки?
Я использую Ubuntu 17.04 с ядром 4.10.0-20-generic.
3 ответа
В вашей корневой папке ядра 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
На основании ответа криптобоя :
Создайте файл x509.genkey.
echo -e "[ req ] \n\ default_bits = 4096 \n\ distinguished_name = req_distinguished_name \n\ prompt = no \n\ x509_extensions = myexts \n\ [ req_distinguished_name ] \n\ CN = Modules \n\ \n\ [ myexts ] \n\ basicConstraints=critical,CA:FALSE \n\ keyUsage=digitalSignature \n\ subjectKeyIdentifier=hash \n\ authorityKeyIdentifier=keyid" > x509.genkey
Бегать:
openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem
Переместите ключевые файлы в нужную папку, например:
mv signing_key.pem signing_key.x509 `find /usr/src/*-generic/certs`
эта команда работает у меня в Manjaro Linux, 2023:
https://github.com/webcamoid/akvcam/issues/15#issuecomment-612657792
Некоторые люди сообщили, что бег
sudo depmod -a
может решить проблему.