Installazione e firma di moduli kernel personalizzati su Secure Boot SLES 15

Su SUSE Linux Enterprise Server 15, un driver di terze parti potrebbe compilarsi correttamente ma non caricarsi, restituendo gli errori "Chiave richiesta non disponibile" o "Chiave rifiutata dal servizio". Quando UEFI Secure Boot impone la firma dei moduli, la soluzione consiste nel firmare il modulo del kernel personalizzato con un certificato attendibile, registrare tale certificato tramite la gestione della chiave proprietaria della macchina (MOK) e quindi caricare il modulo normalmente, senza disabilitare Secure Boot.

Questa procedura presuppone un sistema UEFI SLES 15 standard che utilizza SUSE shim, un kernel-defaultkernel, i diritti di amministratore e una fonte attendibile per il driver. Si concentra sui .komoduli personalizzati, non sulla firma di un kernel sostitutivo o sulla modifica delle chiavi della piattaforma firmware. Gli esempi seguono il modello di amministrazione di SLES 15 SP6/SP7; verificare le differenze di pacchetto e di kernel sul service pack installato.

1. Verifica prima Secure Boot e il kernel in esecuzione.

Accedi con i privilegi di amministratore e identifica il kernel che hai effettivamente avviato. La sola corrispondenza del nome del pacchetto non garantisce che un modulo possa essere caricato in quel kernel.

uname -r
mokutil --sb-state
ls -ld "/lib/modules/$(uname -r)/build"
Terminale che mostra uname -r, lo stato di Secure Boot di mokutil e un controllo della directory di compilazione del kernel in esecuzione
Prima di installare o firmare un driver, verificare la versione attiva del kernel e lo stato di Secure Boot.

Se mokutilSecure Boot è abilitato, una firma non attendibile è una probabile spiegazione per un errore di caricamento relativo alla chiave. Se è disabilitato, indaga su altre cause prima di generare le chiavi; anche l'applicazione esplicita della firma del kernel può essere rilevante. Controlla il log del kernel dopo un caricamento fallito per il messaggio di rifiuto effettivo.

sudo journalctl -k -b --no-pager | tail -n 50

Prima di installare il modulo candidato, ispezionalo. Sostituisci il nome del file di esempio con quello reale; vermagicdeve corrispondere alla versione del kernel in esecuzione e alle proprietà di compilazione compatibili.

modinfo -F name /path/to/mydriver.ko
modinfo -F vermagic /path/to/mydriver.ko
Terminale che mostra un esempio di elenco modinfo per un driver del kernel esterno e il percorso dello strumento di firma del kernel.
Esamina i metadati del modulo, in particolare quelli di Vermagic, invece di presumere che qualsiasi file .ko sia compatibile con SLES 15.

2. Utilizzare un pacchetto driver supportato o creare un modulo corrispondente

Innanzitutto, richiedete al fornitore dell'hardware o del software un pacchetto del modulo del kernel (KMP) già firmato e compatibile con SLES. Questa soluzione è preferibile all'installazione manuale di un file binario: il fornitore potrebbe infatti occuparsi della gestione degli aggiornamenti del kernel e fornire una procedura documentata per la registrazione dei certificati. La firma del fornitore non è automaticamente considerata attendibile su ogni macchina con Secure Boot.

Se è necessario compilare il driver, installare i file di sviluppo corrispondenti al kernel in esecuzione. Per quanto riguarda la kernel-defaultversione, i pacchetti SLES standard includono il pacchetto di sviluppo del kernel predefinito, i file di sviluppo del kernel e gli strumenti di compilazione. La disponibilità del repository e le versioni dipendono dalla registrazione e dai moduli SLES abilitati.

sudo zypper install gcc make openssl mokutil kernel-devel kernel-default-devel
rpm -q kernel-default-devel kernel-devel
readlink -f "/lib/modules/$(uname -r)/build"
Terminale in stile SLES che mostra un'installazione di zypper dei prerequisiti per lo sviluppo e la firma del kernel.
Installa i pacchetti di sviluppo del kernel e gli strumenti crittografici corrispondenti prima di lavorare con un modulo personalizzato.

Se la directory di compilazione non è presente o il pacchetto di sviluppo è destinato a una versione del kernel diversa, è necessario prima risolvere l'incompatibilità tra pacchetto e kernel. Un kernel appena installato potrebbe richiedere un riavvio controllato prima di poterlo utilizzare per la compilazione.

Dalla directory sorgente del driver attendibile, utilizzare le istruzioni di compilazione del fornitore. Per i moduli convenzionali basati su kbuild, il comando seguente esegue la compilazione sul kernel in esecuzione; non scarica né crea un driver autonomamente.

cd /path/to/driver-source
make -C "/lib/modules/$(uname -r)/build" M="$PWD" modules
Terminale che mostra il comando kbuild make durante la compilazione di un modulo kernel esterno per il kernel SLES in esecuzione.
Utilizzare la directory di compilazione del kernel e la directory dei sorgenti del driver per produrre un file .ko corrispondente.

Salta la compilazione se disponi già di una versione compatibile .koda un fornitore affidabile. Non forzare mai il caricamento di un modulo con la versione errata vermagic; una firma non può riparare un binario incompatibile.

3. Creare la chiave di firma e firmare il modulo installato

Genera una chiave RSA e un certificato X.509 dedicati in una directory accessibile solo dall'utente root. Il certificato pubblico verrà registrato; la chiave privata deve rimanere protetta perché chiunque la controlli può firmare moduli aggiuntivi di cui questa macchina potrebbe fidarsi.

sudo -i
umask 077
mkdir -p /root/module-signing
cd /root/module-signing
openssl req -new -x509 -newkey rsa:3072 -sha256 -days 3650 -nodes \
  -subj "/CN=SLES Custom Module Signing/" \
  -keyout MOK.priv -out MOK.pem
openssl x509 -in MOK.pem -outform DER -out MOK.der
chmod 600 MOK.priv
Terminale che mostra un comando OpenSSL per la creazione di una chiave privata RSA locale e di un certificato di firma del modulo X.509.
Genera una coppia di chiavi separata per la firma del modulo e mantieni la chiave privata accessibile solo all'amministratore.

-nodesQuesto esempio semplice crea una chiave privata non crittografata; per una pipeline di firma in ambiente di produzione, utilizzare una chiave crittografata adeguatamente protetta o un servizio di firma esterno in conformità con le proprie policy di sicurezza. La validità di dieci anni qui indicata è puramente illustrativa e non rappresenta una raccomandazione aziendale per la durata a vita del certificato.

Copia il modulo completato nella directory dei moduli del kernel in esecuzione. Firma il file installato esattamente come lo hai creato, dopo qualsiasi operazione di packaging, rimozione di codice o altre modifiche al file. Sostituisci mydriveril percorso con il nome base e la posizione effettivi del modulo.

install -D -m 0644 /path/to/mydriver.ko \
  "/lib/modules/$(uname -r)/extra/mydriver.ko"
SIGN_FILE="$(readlink -f /lib/modules/$(uname -r)/build)/scripts/sign-file"
test -x "$SIGN_FILE" || echo "Locate the sign-file binary for this kernel"
"$SIGN_FILE" sha256 /root/module-signing/MOK.priv \
  /root/module-signing/MOK.der \
  "/lib/modules/$(uname -r)/extra/mydriver.ko"
modinfo -F signer "/lib/modules/$(uname -r)/extra/mydriver.ko"
Terminale che mostra un esempio di invocazione del file di firma e l'ispezione del firmatario tramite modinfo per un modulo del kernel.
Applica la firma al file .ko installato e controlla il campo del firmatario prima di caricarlo.

Se sign-filenon è presente in quel percorso, individua lo strumento fornito con i file di compilazione del kernel corrispondenti anziché copiare una versione non correlata. La visualizzazione di un firmatario significa che il file contiene metadati di firma; ciò non dimostra che il firmatario sia stato registrato. Non rimuovere o modificare mai il modulo dopo la firma.

4. Registra il certificato pubblico utilizzando MOK

Importa il certificato pubblico in formato DER e MOK.privimposta la password di registrazione monouso richiesta mokutil. Configura l'accesso alla console prima del riavvio; l'autorizzazione avviene nell'interfaccia MokManager all'avvio, non in una shell SSH.

mokutil --import /root/module-signing/MOK.der
mokutil --list-new
reboot
Menu di avvio blu in stile MokManager con l'opzione "Registra MOK" evidenziata sopra le altre opzioni della Chiave proprietario macchina.
Nel menu di avvio UEFI, selezionare Registra MOK e confermare la registrazione del certificato richiesto.

Al successivo avvio, selezionare "Registra MOK" , seguire le istruzioni di conferma, inserire la password monouso e continuare l'avvio. L'aspetto del menu dipende dalla versione del firmware e dello shim. Tornare a Linux senza confermare la registrazione rende il nuovo certificato non attendibile.

Dopo l'avvio, verificare che il certificato specifico sia stato registrato:

sudo mokutil --test-key /root/module-signing/MOK.der
sudo mokutil --list-enrolled

5. Caricare il modulo firmato e isolare gli errori rimanenti

Aggiorna i metadati delle dipendenze del modulo e carica il modulo tramite il suo nome, non tramite il percorso completo del file. modprobeRisolve le dipendenze e rispetta la configurazione standard del modulo.

sudo depmod -a
sudo modprobe mydriver
lsmod | grep -w mydriver
modinfo -F signer mydriver
Terminale che visualizza i comandi modprobe, lsmod e kernel-log utilizzati per verificare un modulo firmato
Verifica che il modulo firmato compaia nell'elenco dei moduli caricati e controlla il log del kernel per individuare eventuali errori.

Se il caricamento continua a non riuscire, scegli l'azione correttiva più appropriata in base alle evidenze:

  • Chiave rifiutata o chiave richiesta non disponibile: riavviare mokutil --test-key; verificare che il file installato sia quello firmato e controllare se un aggiornamento del driver lo ha sostituito.
  • Formato del modulo non valido: confronta modinfo -F vermagiccon uname -r, ricompila per il kernel attivo e controlla l'architettura della CPU.
  • Simbolo sconosciuto o dipendenza mancante: ispeziona journalctl -k -bi moduli richiesti dal fornitore e l'ABI del kernel; un'altra firma non risolverà il problema dei simboli mancanti.

Per i driver di archiviazione o di rete critici per l'avvio, testarli prima su un sistema non di produzione e assicurarsi che sia disponibile una console di ripristino. Configurare il caricamento automatico solo dopo che il driver funziona in modo affidabile; consultare la documentazione SUSE /etc/modules-load.d/per i moduli che altrimenti non si caricano al rilevamento del dispositivo.

Verificare il risultato dopo il riavvio.

Se il caricamento persistente è un problema, riavvia il sistema durante la finestra di manutenzione. Verifica che Secure Boot rimanga abilitato, che la chiave pubblica sia registrata, che il modulo sia presente e che il kernel non segnali nuovi errori di verifica o compatibilità. Ricompila o reinstalla e firma i driver aggiornati .kodopo gli aggiornamenti del kernel o dei driver del fornitore.

mokutil --sb-state
sudo mokutil --test-key /root/module-signing/MOK.der
modinfo -F signer mydriver
lsmod | grep -w mydriver
sudo journalctl -k -b --no-pager | tail -n 30

Documentazione principale: SUSE SLES 15 SP6: Chiavi UEFI e del proprietario della macchina ; SUSE: Gestione dei moduli del kernel ; Kernel Linux: Strumento di firma dei moduli ; Kernel Linux: Compilazione di moduli esterni . La Guida di amministrazione di SLES 15 SP6 è stata aggiornata il 17 settembre 2026; il comportamento dei comandi per i programmi di installazione di driver di terze parti e le varianti del kernel non predefinite deve essere confermato con i rispettivi manutentori.

Lascia un commento

Automatizza i backup coerenti di Nextcloud con Restic e Cron.

Automatizza i backup coerenti di Nextcloud con Restic e Cron.

Esegui il backup simultaneo dei file di Nextcloud e di MariaDB, pianifica snapshot crittografati di Restic tramite cron e verifica il ripristino senza mettere a rischio il server di produzione.

Metti ONLYOFFICE Docs dietro HAProxy senza interrompere la modifica

Metti ONLYOFFICE Docs dietro HAProxy senza interrompere la modifica

Configura HAProxy HTTPS, l'inoltro delle intestazioni, i timeout WebSocket e i controlli di integrità per ONLYOFFICE Docs, quindi verifica le modifiche e i salvataggi.

Aggiungere font al server di documenti ONLYOFFICE: Docker vs Linux

Aggiungere font al server di documenti ONLYOFFICE: Docker vs Linux

Installa i font personalizzati in ONLYOFFICE Document Server, confronta i mount Docker persistenti con le copie dirette, ricostruisci l'elenco dei font e verifica il risultato.

Debian 12 su un VPS con poca RAM: come ridurre i crash di MySQL dovuti a errori di memoria insufficiente (OOM).

Debian 12 su un VPS con poca RAM: come ridurre i crash di MySQL dovuti a errori di memoria insufficiente (OOM).

Diagnosticare i kill di MySQL OOM su Debian 12, verificare i limiti di memoria del VPS, configurare lo swap e ottimizzare la memoria e la concorrenza del database, senza promettere una soluzione universale.

Eseguire il backup e il ripristino di una casella di posta Zimbra CE utilizzando le esportazioni TGZ.

Eseguire il backup e il ripristino di una casella di posta Zimbra CE utilizzando le esportazioni TGZ.

Esporta una singola casella di posta Zimbra Community Edition, convalida il relativo backup TGZ e ripristina gli elementi mancanti senza sovrascrivere la posta esistente.

Consenti agli utenti autorizzati di creare stanze Jitsi con l'accesso tramite Keycloak.

Consenti agli utenti autorizzati di creare stanze Jitsi con l'accesso tramite Keycloak.

Consenti solo agli account approvati di avviare stanze Jitsi Meet utilizzando l'autenticazione tramite Keycloak e token, mantenendo al contempo la possibilità per gli ospiti di partecipare quando necessario.

Come configurare una VPN WireGuard Point-to-Site su Debian 12

Come configurare una VPN WireGuard Point-to-Site su Debian 12

Configura un server VPN WireGuard su Debian 12 per un client remoto. Configura le chiavi, l'inoltro IPv4, il NAT con nftables, l'accesso tramite firewall e i controlli di connessione.

Sincronizza gli utenti di Active Directory con ONLYOFFICE DocSpace tramite LDAP

Sincronizza gli utenti di Active Directory con ONLYOFFICE DocSpace tramite LDAP

Collega ONLYOFFICE DocSpace ad Active Directory o OpenLDAP, importa utenti e gruppi in modo sicuro, mappa i campi dell'account e pianifica una sincronizzazione affidabile.

Installazione e firma di moduli kernel personalizzati su Secure Boot SLES 15

Installazione e firma di moduli kernel personalizzati su Secure Boot SLES 15

Carica un modulo kernel SLES 15 personalizzato senza disabilitare Secure Boot. Fai corrispondere il kernel in esecuzione, firma il file .ko, registra una chiave MOK e verifica il caricamento.

Inoltro sicuro dei log Syslog SLES con rsyslog e TLS reciproco

Inoltro sicuro dei log Syslog SLES con rsyslog e TLS reciproco

Invio dei log di sistema SLES a un collettore rsyslog remoto tramite TLS autenticato, con verifica dei certificati, buffering in caso di interruzione del servizio e test di consegna.