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 rpmbuild
ist 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_pkey
und mod
die 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_SIG
den Konfigurationswerten lesen:
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"