Signieren Sie ein Modul nach der Kernel-Kompilierung

Signieren Sie ein Modul nach der Kernel-Kompilierung

Ich habe einen Kernel in tmpfs erstellt und dann einen Neustart durchgeführt.

Jetzt sehe ich eine Meldung, wenn ich das Drittanbietermodul kompiliere,

NO SIGN [M] XXXX.ko

Wie kann ich es signieren lassen? Das dabei generierte Schlüsselpaar rpmbuildist vermutlich bereits verloren

Antwort1

Dies war überraschenderweise nicht dokumentiert. Ich fand diese Datei,modul-signierung.txt, das Teil der RHEL6-Kernel-Dokumentation ist. In diesem Dokument wird gezeigt, wie Signaturschlüssel generiert werden, vorausgesetzt, Sie möchten alle Ihre Module als Teil eines Kernel-Builds signieren:

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

Auch der Artikel aus dem Linux Journal mit dem Titel:Signierte Kernelmoduleenthält einige gute Details und Schritte zur Durchführung von Teilen davon, aber ich konnte die User Space-Tools extract_pkeyund moddie darin referenzierten Tools nicht finden.

Vielleicht möchten Sie sich umsehenGreg Kroahs Website, vielleicht finden Sie in einer seiner Präsentationen etwas Nützliches.

Verweise

Antwort2

Gehen Sie in das Kernel-Quellverzeichnis und führen Sie Folgendes aus (Beispiel):

./scripts/sign-file sha512 ./signing_key.priv ./signing_key.x509 /lib/modules/3.10.1/kernel/drivers/char/my_module.ko

Überprüfen Sie, welchen Digest-Algorithmus Ihr Kernel verwendet, indem Sie die Datei .config öffnen und ihn in CONFIG_MODULE_SIGden Konfigurationswerten lesen:

CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"

verwandte Informationen