Sie haben nicht gesagt, wofür Sie den Schlüssel benötigen, aber auf Ubuntu mache ich dies regelmäßig, um Treiber manuell zu signieren. Mein BroadCom-WLAN-Treiber ist von Drittanbietern und nicht signiert. Ich verwende bei jeder Installation eines neuen Kernels das folgende Skript: -
#!/bin/bash if [ "$(whoami)" != "root" ] then echo "wlsign: must be called from 'root'" elif [ -z "$1" -o "$1" == "-c" ] then [ "$1" == "-c" ] && \ openssl req -new -x509 -newkey rsa:2048 -keyout wl.priv -outform DER -out wl.der -nodes -days 36500 -subj "/CN=BroadCom/" /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./wl.priv ./wl.der $(modinfo -n wl) [ "$1" == "-c" ] && mokutil --import wl.der [ "$1" == "-c" ] && echo Now reboot and select MOK install || modprobe wl else [ "$1" != "-h" ] && echo "wlsign: invalid options - $@" echo 'wlsign [-c|-h] : signs proprietary Wireless kernel drivers' echo ' -c : create new keys (default: use existing)' echo ' -h : give this help information' fi
Ich brauchte die -c
Option nur einmal, um die Schlüsseldateien zunächst zu erstellen. Nach der Verwendung muss -c
das System neu gestartet und der neue Schlüssel in die UEFI-Firmware übernommen werden.
Ich habe ähnliche Skripts für andere unsignierte Treiber, insbesondere für die VMware-Treiber, die spontan kompiliert werden und daher niemals signiert werden können.
Da Kali und Ubuntu beide Debian-Derivate sind, hoffe ich, dass die Systemverzeichnisstrukturen ähnlich sind. Beachten Sie, dass das sign-file
Programm in den Kernel-Headern linux-headers-*
installiert ist und daher für Ihren Kernel installiert werden muss. Es gibt ein kmodsign
Programm /usr/bin/
, das eine Alternative sein kann, aber ich habe es nicht probiert.
Ich kann mich nicht erinnern, wo ich diese Informationen gefunden habe, also kann ich deren Quelle nicht erkennen.