• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Kernel Digital-Signatur

Hallo,

ich habe eine Frage zu dem kernel
Code:
# uname -a
Linux linux-lltr 4.10.0-1.g81ace5a-default #1 SMP PREEMPT Mon Feb 20 16:47:26 UTC 2017 (81ace5a) x86_64 x86_64 x86_64 GNU/Linux
Ist der Kernel digital signiert und damit in einem System mit EFI-secure-boot akzeptiert?

Ich kann Opensuse 42.2 nämlich nur nach deaktivieren von Secure-Boot hochfahren.

Grüße Heinz-Peter
 

gehrke

Administrator
Teammitglied
Ohne da tiefer drin zu stecken: Ob und womit das Image signiert wurde, solltest Du mittels sbverify --list ... überprüfen können.
 
A

Anonymous

Gast
Keine Ahnung was das für ein Kernel genau sein soll.
Die offiziellen Kernel der Distributionen sind signiert, Kontrolle wie oben beschrieben.
Code:
lux001:/boot # sbverify --list vmlinuz-3.11.10-29-desktop 
signature 1
image signature issuers:
 - /CN=openSUSE Secure Boot CA/C=DE/L=Nuremberg/O=openSUSE Project/emailAddress=build@opensuse.org
image signature certificates:
 - subject: /CN=openSUSE Secure Boot Signkey/C=DE/L=Nuremberg/O=openSUSE Project/emailAddress=build@opensuse.org
   issuer:  /CN=openSUSE Secure Boot CA/C=DE/L=Nuremberg/O=openSUSE Project/emailAddress=build@opensuse.org
Das alleine reicht aber nicht aus um den Kernel auch mittels Secure boot starten zu können.
Ein solcher Kernel läßt sich immer noch nicht direkt oder nur mit einem normalem UEFI Bootloader laden, dazu ist noch der Prebootloader Shim davor notwendig.
https://linux-club.de/wiki/opensuse/UEFI/Bootloader#SHIM
der verwendete Shim sollte dann am besten von der entsprechenden Distribution sein und offiziell von Microsoft für UEFI signiert sein.
In diesem Fall sollte es automatisch gehen, da dann shim den von der Distribution zur Signierung verwendeten Key kennt, mit einem Shim von Opensuse sollten also alle offiziellen Kernel von Opensuse auch problemlos im Secureboot gehen. Ansonsten bei signierten Kernel aus anderen Quellen und Shim von Opensuse muss erst der Key dafür zur MOK-Liste hinzugefügt werden.

Solltest du nicht wirklich genau wissen was du dort genau tust oder machen willst, lass die Finger davon, wenn du die UEFI Sicherheit zu weit aufweichst, dann kannst du auch gleich Secureboot ausschalten, das macht weniger Arbeit und hat den selben Sinn und Zweck.

robi
 

Sauerland

Ultimate Guru
Und nur einmal zur Klarstellung:
openSUSE Leap 42.2 funktioniert mit eingeschaltetem secure boot.

Diese Woche noch installiert.
 
OP
Heinz-Peter
gehrke schrieb:
Ohne da tiefer drin zu stecken: Ob und womit das Image signiert wurde, solltest Du mittels sbverify --list ... überprüfen können.
Leider funktioniert das Kommando bei mir nicht.
Code:
ltr:/boot # sbverify --list vmlinuz-4.10.0-1.g81ace5a-default
If 'sbverify' is not a typo you can use command-not-found to lookup the package that contains it, like this:
    cnf sbverify
Ist es eventuell in einem Paket versteckt?



robi schrieb:
Das alleine reicht aber nicht aus um den Kernel auch mittels Secure boot starten zu können.
Ein solcher Kernel läßt sich immer noch nicht direkt oder nur mit einem normalem UEFI Bootloader laden, dazu ist noch der Prebootloader Shim davor notwendig.
Installiert habe ich mit der Grub2 Option "Secure Boot Unterstützung aktivieren. Die Kommando-Ausgabe hat das auch bestätigt, siehe unten.
Code:
# zypper se shim
Repository-Daten werden geladen...
Installierte Pakete werden gelesen...

S | Name | Zusammenfassung  | Typ       
--+------+------------------+-----------
i | shim | UEFI shim loader | Paket     
  | shim | UEFI shim loader | Quellpaket

Auch nach dem ersten booten mit aktiviertem Secore Boot habe ich mit Yes bestätigt, siehe Foto
 

gehrke

Administrator
Teammitglied
Heinz-Peter schrieb:
Leider funktioniert das Kommando bei mir nicht.
[...]
Ist es eventuell in einem Paket versteckt?
Sorry, ich habe seit einiger Zeit kein openSUSE mehr.

Aber wenn Du dieses Thema recherchierst, dann findest Du das hier:
http://forum.mosnis.de/viewtopic.php?f=42&t=16&start=10#p132

Dort den Link von Robi (efitools und sbsigntools), welcher zumindest auf eine Seite mit Code für 42.1 führt. Keine Ahnung, ob der auch für Deine Release funktioniert...
 
A

Anonymous

Gast
wie es aussieht gibt's aktuell das sbsigntools zumindestens im Orginal noch nicht für 42.2
aber der Kernel den du verwendest scheint aus dem richtigem Repo zu stammen, sollte also sauber signiert sein.

Ich denke ehr das es nicht am Kernel oder dessen Signatur liegt, sondern das bei dir als erster Bootloader Grub2 konfiguriert ist und nicht Shim
https://linux-club.de/wiki/opensuse/UEFI_Boot_Konfiguration#Konfiguration_aus_Linux
efibootmgr sollte bei dir schon installiert sein.


robi
 
OP
Heinz-Peter
Hallo @gerke, hallo @robi,

danke für Eure Hilfe und Tipps.
Ich brauche jetzt etwas Zeit um das Alles zu verarbeiten, werde mich aber melden.
Nochmal Danke an Euch.

Grüße Heinz-Peter
 

josef-wien

Ultimate Guru
Grundsätzlich sehe ich keinen Anlaß, warum die "Version für 42.1" nicht funktionieren sollte, ich würde das Repo einbinden und sbsigntools samt Abhängigkeiten installieren. Macht nur der eine Kernel Probleme? Was ergibt:
Code:
efibootmgr -v
 
OP
Heinz-Peter
josef-wien schrieb:
Grundsätzlich sehe ich keinen Anlaß, warum die "Version für 42.1" nicht funktionieren sollte...
Es handelt sich um die Version 42.2, siehe Konsole-Ausgabe:
Code:
# cat /etc/os-release
NAME="openSUSE Leap"
VERSION="42.2"
ID=opensuse
ID_LIKE="suse"
VERSION_ID="42.2"
PRETTY_NAME="openSUSE Leap 42.2"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:42.2"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
josef-wien schrieb:
... ich würde das Repo einbinden und sbsigntools samt Abhängigkeiten installieren.
Das Repo http://download.opensuse.org/repositories/home:/jejb1:/UEFI/ beinhaltet ein Ordner openSUSE_Leap_42.1/ also nicht für meine Version.

josef-wien schrieb:
...Macht nur der eine Kernel Probleme?
Nein, auch der ältere kernel-default-4.9.10-1.1.g59c7cc2. aus den Systempaketen.
josef-wien schrieb:
Was ergibt:
Code:
efibootmgr -v
Hier passt der Pfad zu der Datei shim.efi nicht.
Der Dateimanager zeigt den hier: /boot/efi/EFI/opensuse/
aber Kommando
Code:
efibootmgr -v
zeigt den hier \EFI\opensuse\shim.efi
Hier noch die Kommando-Ausgabe (x=entfernte Daten)
Code:
efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0005,0003,2003,2001,2002
Boot0000* opensuse-secureboot   HD(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)File(\EFI\opensuse\shim.efi)
Boot0003* Windows Boot Manager  HD(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.
Boot0005* openSUSE      HD(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)File(\EFI\opensuse\grubx64.efi)RC
Boot2001* EFI USB Device        RC
Boot2002* EFI DVD/CDROM RC
Boot2003* EFI Network   RC

Es wurde mir gerade ein neuer Kernel angeboten, ein kernel-default-4.10.1-1.1.g1ecd5af Mal sehen ob der was ändert.

Grüße Heinz-Peter
 

josef-wien

Ultimate Guru
Du hast mich mißverstanden. Ich weiß, daß bei Dir 42.2 läuft, aber das für 42.1 erstellte Paket sbsigntools sollte auch bei 42.2 laufen.

Der Pfad zu shim (das ist jenes vom UEFI aufgerufene Programm, durch das in weiterer Folge Linux gestartet wurde) paßt, die Datei SHIM.EFI befindet sich auf der EFI-Systempartition im Verzeichnis \EFI\OPENSUSE, und diese Partition ist im laufenden Linux (und nur dort) unter /boot/efi eingehängt. Die vielen x sind unnötige Liebesmüh, mit der bei der Erstellung der Partition festgelegten Partition-UUID fängt ein Bösewicht nichts an (im gegenständlichen Fall ist sie irrelevant, da wollte ich nur wissen, ob die shim-Zeile BootCurrent entspricht, sie kann aber für eine Hilfe in anderen Fällen in Zusammenhang mit weiteren Abfragen durchaus notwendig sein).

Sowohl der 4.9 als auch der 4.10 stammen auf Grund ihres Namens aus dem Kernel-Repo, und nach Deinen Erlebnissen habe ich das Gefühl, daß shim oder GRUB2 die Signatur dieser Kernel nicht kennt und daher das sogenannte secure boot verweigert. Die Signatur der Kernel aus dem Update-Repo von 42.2 wird wohl bekannt sein. Ob dieses Gefühl stimmt, müßte jemand verifizieren, der openSUSE 42.2 verwendet.
 
OP
Heinz-Peter
Hallo @josef-wien,

danke für Deine Analyse des Problems. Auch der neue Kernel kernel-default-4.10.1-2.1.g561cf31 den ich heute installiert habe hat nichts geändert.
Ich bleibe aber bei dem Kernel aus dem Repo http://download.opensuse.org/repositories/Kernel:/stable/standard/
Er ist nicht signiert aber der signierte aus dem openSUSE-Leap-42.2-Update http://download.opensuse.org/update/leap/42.2/oss/ erkennt meine Tastatur nicht. Ich sitze dann vor einem Desktop die mit einer Helligkeit einer 60 Watt Lampe in meine Augen strahlt.

Nochmal vielen dank für Dein Tipp mit dem Opensuse-Kernel-Stable Repo.

Danke auch an @Sauerland für den Hinweis:
Sauerland schrieb:
Und nur einmal zur Klarstellung:
openSUSE Leap 42.2 funktioniert mit eingeschaltetem secure boot.

Diese Woche noch installiert.

Grüße Heinz-Peter
 

Sauerland

Ultimate Guru
Ebenso funktioniert der Kernel aus kernel:stable mit secure boot und EFI auf meinem Lenovo.
Gestern Kernel 4.10 installiert.
 
OP
Heinz-Peter
Ich komme bis zum Grub2 Auswahlmenü, wähle ich hier openSuse, bekomme ich die Meldung z.B.:
Code:
Linux 4.10.0-1.g81ace5a-default wird geladen...
Fehler: /boot/vmlinuz-4.10.0-1.g81ace5a-default has invalid signature.
Fehler: Sie müssen zuerst den kernel laden.
Beliebige Taste drücken, um fortzusetzen...
Drücke ich jetzt eine Taste dann lande ich im Grub2 Auswahlmenü und das ganze Spiel geht von vorne los.
Wie komme ich aus der Nummer raus?
 

Sauerland

Ultimate Guru
Mit einem alten Kernel starten und ein Update machen. Kernel ist bei:
Code:
Linux linux64 4.10.1-2.g561cf31-default #1 SMP PREEMPT Mon Feb 27 13:06:34 UTC 2017 (561cf31) x86_64 x86_64 x86_64 GNU/Linux
 

josef-wien

Ultimate Guru
Derzeit sieht es für mich aus, daß irgendwo bei den Versionen bzw. Konfigurationen von shim bzw. GRUB2 ein Unterschied sein muß.
 

Sauerland

Ultimate Guru
Da stellt sich dann mir die Frage:
Welche Repos, woher ist was installiert........

Auf dem Lenovo nur die openSUSE Repos + kernel:stable + Packman.
 
OP
Heinz-Peter
Sauerland schrieb:
Mit einem alten Kernel starten und ein Update machen. Kernel ist bei:
Code:
Linux linux64 4.10.1-2.g561cf31-default #1 SMP PREEMPT Mon Feb 27 13:06:34 UTC 2017 (561cf31) x86_64 x86_64 x86_64 GNU/Linux
Der neue Kernel hat keine Änderung gebracht. Ich lande immer noch in einer Schleife zwischen Grub2-Auswahlmenü und der Meldung (Die Meldung habe ich vom Monitor abgeschrieben):
Code:
Linux 4.10.1-2.g561cf31-default wird geladen...
Fehler: /boot/vmlinuz-4.10.1-2.g561cf31-default has invalid signature.
Initiale Ramdisk wird geladen ...
Fehler: Sie müssen zuerst den kernel laden.
Beliebige Taste drücken, um fortzusetzen...

Sauerland schrieb:
Da stellt sich dann mir die Frage:
Welche Repos, woher ist was installiert........

Auf dem Lenovo nur die openSUSE Repos + kernel:stable + Packman.
Die Antwort auf die Frage:
Code:
 # zypper lr -uPE
#  | Alias                 | Name                              | Aktiviert | GPG-Überprüfung | Aktualisierung | Priorität | URI                                                               
---+-----------------------+-----------------------------------+-----------+-----------------+----------------+-----------+-------------------------------------------------------------------
 4 | packman.inode.at-suse | Packman_Repository                | Ja        | (r ) Ja         | Ja             |   50      | http://packman.inode.at/suse/openSUSE_Leap_42.2/                  
 1 | Kernel_Stable         | Kernel_Stable                     | Ja        | (r ) Ja         | Ja             |   99      | http://download.opensuse.org/repositories/Kernel:/stable/standard/
 2 | dvd_libdvdcss2        | dvd_libdvdcss2                    | Ja        | (r ) Ja         | Ja             |   99      | http://opensuse-guide.org/repo/openSUSE_Leap_42.2/                                                   
 9 | repo-non-oss          | openSUSE-Leap-42.2-Non-Oss        | Ja        | (r ) Ja         | Ja             |   99      | http://download.opensuse.org/distribution/leap/42.2/repo/non-oss/                                    
10 | repo-oss              | openSUSE-Leap-42.2-Oss            | Ja        | (r ) Ja         | Ja             |   99      | http://download.opensuse.org/distribution/leap/42.2/repo/oss/                                        
13 | repo-update           | openSUSE-Leap-42.2-Update         | Ja        | (r ) Ja         | Ja             |   99      | http://download.opensuse.org/update/leap/42.2/oss/                                                   
14 | repo-update-non-oss   | openSUSE-Leap-42.2-Update-Non-Oss | Ja        | (r ) Ja         | Ja             |   99      | http://download.opensuse.org/update/leap/42.2/non-oss/
 

Sauerland

Ultimate Guru
Muss mich bei dir, Heinz-Peter, entschuldigen, bin gerade mal ins Bios und hab nach secure boot geschaut und es war nicht eingeschaltet.
Ebenso entschuldige ich mich natürlich auch allen anderen Helfern, die auf meine Aussage evtl. vertraut haben.

Obwohl dann nach dem Einschalten gefragt wurde, ob ich dem openSUSE Schlüssel vertraue und ich bejaht habe, entstehen dieselben Fehler wie bei Dir.
Auf gut deutsch:
secure boot und kernel:stable funktioniert auch bei mir nicht.

Sauerland
 
OP
Heinz-Peter
Sauerland schrieb:
Muss mich bei dir, Heinz-Peter, entschuldigen, ...
Du muss Dich nicht bei mir entschuldigen. Erstens, ein Fehler zuzugeben ist eine große Tugend und zweitens, Du hast mir schon sehr oft geholfen, dafür Danke.

Grüße Heinz-Peter
 
Oben