Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2020-06-13 11:11:21

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

UEFI, Secure Boot i kłopot z MokList.

Cześć

Włączyłem na mojej mobo UEFI Secure Boot:

Wersja UEFI:

Kod:

[    0.000000] efi: EFI v2.31 by American Megatrends
[    0.428120] fb0: EFI VGA frame buffer device
[   28.906513] fb0: switching to inteldrmfb from EFI VGA
[   29.466801] EFI Variables Facility v0.08 2004-May-17

Kod:

# root ~> mokutil --sb-state
SecureBoot enabled

Mobo nie miała żadnych kluczy w brzuchu, tylko jakieś hashe w bazie dbx.

Kierując się tym tutkiem:
https://morfikov.github.io/post/jak-dodac-wlasne-kl … fi-pod-linux/
i niebagatelną pomocą Autora tego tutka, udało się, prawie wszystko działa.

Piszę prawie, ponieważ klucze PK, KEK i db mam tylko domowe, nie mam możliwości odpalenia appek uefi podpisanych innymi kluczami  niż mój, ani żadnego LiveCD.

Żeby nie certolić się z bazami KEK i DB, chciałem dodać potrzebne certy min fedora.crt,  debian.cer i Cannonical.cert do bazy MokList
czyli Machine Owner Key.

Kod:

mokutil --import  certyfikat.der

działa,

Kod:

mokutil --list-new

zaimportowanego certa pokazuje, wszystko gra po tej stronie.
Potem w biosie UEFI z poziomu Refinda otwieram MokManager, klikam

Kod:

enroll mok

i elegancko dodaję klucz.

Hash klucza pokazuje też KeyTool otwierany z poziomu UEFI.
Niestety o restarcie klucz nie działa, podpisanej nim binarki EFI nie da się otworzyć,
a w systemie

Kod:

 # root ~> mokutil --list-enrolled
MokListRT is empty

# root ~> efi-readvar 
Variable MokList has no entries

podczas gdy keytool.efi w biosie dalej  je widzi.

Problem podobno jest w paczce shim.15.* i podobno został poprawiony w wersji shim-15.6,
ale nigdzie nie potrafię jej znaleźć.
W Gentoo jest wersja:

Kod:

sys-boot/shim-15.5-r1

a w Debianie:

Kod:

ii  shim-unsigned                                 15+1533136590.3beb971-7

Mam błąd identyczni z  opisanym tutaj:
https://bugzilla.redhat.com/show_bug.cgi?id=1686697

W związku tym malutkie pytanko, czy to moja mobo ma jakąś skopaną wersję UEFI,
a u innych Użytkowników DUG MokList chodzi normalnie,
czy faktycznie skopany jest shim, i trzeba szukać nowej wersji?

Pozdro

Ostatnio edytowany przez Jacekalex (2020-06-14 11:01:44)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#2  2020-06-13 12:40:50

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: UEFI, Secure Boot i kłopot z MokList.

Raczej wątpliwe żeby shim był trefny -- ja obstawiam, że implementacja EFI u ciebie jest do dupy. xD

https://github.com/rhboot/shim/releases

Możesz albo ciągnąć ten ostatni release albo z gita zbudować bezpośrednio -- nowszego nie będzie.

A ty te klucze to w końcu zrobiłeś 2048 czy 4096? xD

Ostatnio edytowany przez morfik (2020-06-13 12:43:03)

Offline

 

#3  2020-06-13 16:19:07

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: UEFI, Secure Boot i kłopot z MokList.

Na razie mam klucze 2048.

I nie tylko mój bios jest do d, ale jakaś implementacja, sporo jest wątków z tym problemem na necie.

Co się githuba tyczy, znam ten adres.

Ale najpierw muszę spróbować shim-15.6 z Fedory.

Ostatnio edytowany przez Jacekalex (2020-06-13 16:21:01)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2020-06-13 16:52:56

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: UEFI, Secure Boot i kłopot z MokList.

Generalnie to masz tę samą wersję EFI/UEFI co i ja (EFI v2.31 by Lenovo) ale implementacje to już są tak wymyślne, że ta sama wersja może się zachowywać różnie w zależności od tego producenta, który przy tym majstrował. U mnie też z początku Secure Boot nie chciał działać jak należy, ale po zaoraniu i wgraniu własnych kluczy ruszył bez problemu. xD

# root ~> efi-readvar
Variable MokList has no entries

Odnośnie tego, to ta zmienna jest zawsze pusta i nikt nie wie po co to jest. Więc się nią nie sugeruj. xD

Ostatnio edytowany przez morfik (2020-06-13 16:55:05)

Offline

 

#5  2020-06-14 02:23:16

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: UEFI, Secure Boot i kłopot z MokList.

W zasadzie tak, ino że te klucze w MokList też nie są używalne w systemie UEFI, i np Debiana podpisanego Debian Boot CA nie mogłem odpalić do czasu, aż usunąłem podpis Debiana, i podpisalem go własnym kluczem.

Na razie zrezygnowałem z MokList na dobre.

Udalo mi się wreszcie użyć jednego certu do UEFI db.cert i w kernelu do podpisywania modułów.
Robiony wg twojego tutka klucz dk.key nie dzialal w kernelu, także zrobiłem nowy cert wg tego tutka:
https://www.kernel.org/doc/html/v4.15/admin-guide/module-signing.html
i ten działa zarówno w UEFI jak i w kernelu, tylko zmieniłem mu długość na 2048 (na kernel.org polecają 4096).

Wczytuje się do kernela grzecznie z obu źródeł:

Kod:

02ec35b2 I------     1 perm 1f010000     0     0 asymmetri domek.cert: 66e6fda79eca0e6c3f9bd81b84fc7b766456a800: X509.rsa 6456a800 []
29a3667f I------     1 perm 1f030000     0     0 asymmetri domek.cert: 66e6fda79eca0e6c3f9bd81b84fc7b766456a800: X509.rsa 6456a800 []

Ostatnio edytowany przez Jacekalex (2020-06-14 02:26:28)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2020-06-14 12:34:53

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: UEFI, Secure Boot i kłopot z MokList.

Jacekalex napisał(-a):

W zasadzie tak, ino że te klucze w MokList też nie są używalne w systemie UEFI, i np Debiana podpisanego Debian Boot CA nie mogłem odpalić do czasu, aż usunąłem podpis Debiana, i podpisalem go własnym kluczem.

Po to są te binarki z paczek unsigned. Jeśli wgrywasz signed to musisz mieć certy w firmware EFI/UEFI wgrane.

Jacekalex napisał(-a):

Udalo mi się wreszcie użyć jednego certu do UEFI db.cert i w kernelu do podpisywania modułów.
Robiony wg twojego tutka klucz dk.key nie dzialal w kernelu, także zrobiłem nowy cert wg tego tutka:

Którego tutka?

Offline

 

#7  2020-06-14 23:05:19

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: UEFI, Secure Boot i kłopot z MokList.

Morfik napisał(-a):

Którego tutka?

jacekalex napisał(-a):

Udalo mi się wreszcie użyć jednego certu do UEFI db.cert i w kernelu do podpisywania modułów.
Robiony wg twojego tutka klucz dk.key nie dzialal w kernelu, także zrobiłem nowy cert wg tego tutka:
https://www.kernel.org/doc/html/v4.15/admin-guide/module-signing.html
i ten działa zarówno w UEFI jak i w kernelu, tylko zmieniłem mu długość na 2048 (na kernel.org polecają 4096).

https://www.kernel.org/doc/html/v4.15/admin-guide/module-signing.html napisał(-a):

Under normal conditions, when CONFIG_MODULE_SIG_KEY is unchanged from its default, the kernel build will automatically generate a new keypair using openssl if one does not exist in the file:

certs/signing_key.pem

during the building of vmlinux (the public part of the key needs to be built into vmlinux) using parameters in the:

certs/x509.genkey

file (which is also generated if it does not already exist).

It is strongly recommended that you provide your own x509.genkey file.

Most notably, in the x509.genkey file, the req_distinguished_name section should be altered from the default:

[ req_distinguished_name ]
#O = Unspecified company
CN = Build time autogenerated kernel key
#emailAddress = unspecified.user@unspecified.company

The generated RSA key size can also be set with:

[ req ]
default_bits = 4096

It is also possible to manually generate the key private/public files using the x509.genkey key generation configuration file in the root node of the Linux kernel sources tree and the openssl command. The following is an example to generate the public/private key files:

openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
   -config x509.genkey -outform PEM -out kernel_key.pem \
   -keyout kernel_key.pem

The full pathname for the resulting kernel_key.pem file can then be specified in the CONFIG_MODULE_SIG_KEY option, and the certificate and key therein will be used instead of an autogenerated keypair.

Pozdro

Ostatnio edytowany przez Jacekalex (2020-06-14 23:07:02)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8  2020-06-14 23:31:10

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: UEFI, Secure Boot i kłopot z MokList.

Chodziło mi raczej o  dk.key, a to miałobyć db.key . No ja generalnie to nie wiem co tam kombinujesz, bo ja pierw robiłem tutka, a potem według niedługo klucze i bez problemu u mnie działa. xD Nawet miałem to w artykule uwzględnione. Musisz czytać powoli ze zrozumieniem. xD

Offline

 

#9  2020-06-15 00:31:17

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: UEFI, Secure Boot i kłopot z MokList.

Klucz db.key wg twojego tutka ładnie działa w UEFI, ale nie działał u mnie w podpisywaniu modułów kernela poprzez /usr/src/linux/scripts/sign-file, dlatego zrobiłem klucz wg dokumentacji kernela,
i wsadziłem go do UEFI jako klucz db.

W ten sposób i jajo do SecureBoot i moduły kernela są podpisywane jednym kluczem,
Czyli osiagnałem w ten sposób zakładany cel, o który mi chodziło.

Ostatnio edytowany przez Jacekalex (2020-06-15 01:44:20)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#10  2020-06-15 10:55:41

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: UEFI, Secure Boot i kłopot z MokList.

Ja mam dokładnie tak samo. xD Różnica w stosunku do podpisywania kernela jest taka, że on potrzebuje certa i klucza w jednym pliku. Więc sobie cat'nij db.key i db.cert i wrzuć do to jednego pliku i ścieżkę do tego pliku podaj w konfiguracji kernela. Dokładnie to samo robi to polecenie, które dałeś:

Kod:

openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
   -config x509.genkey -outform PEM -out kernel_key.pem \
   -keyout kernel_key.pem

Offline

 

#11  2020-06-15 11:47:22

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: UEFI, Secure Boot i kłopot z MokList.

db.pem dla kernela zrobiłem, ale i tak był problem.
Nie wnikałem, czy to wina Libressl czy sposobu generowania klucza, ale po prostu zrobiłem klucz wg przepisu na kernel.org.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)