Systemd boot secure boot

Geschreven op en bijgewerkt op

Ter aanvulling op Conversie Fedora van GRUB naar systemd-boot deel 2 gaat het hier over secure boot en hoe dit te doen is.

Let op:

Inleiding

Dit proces gaat ervan uit dat je je eigen secure boot sleutel(s) wilt gebruiken en importeren in je machine’s firmware. Als je dit niet wilt is deze blog niet voor jou.

Om je eigen (secure boot) sleutel(s) te importeren in je firmare (UEFI) moet je deze in setup mode zetten. Hoe je dit moet doen verschilt per machine en daar is dus helaas geen simpel lijstje voor te geven. Waar het vaak op neerkomt:

Als het goed is geeft sudo bootctl status na het weggooien van de platform key terug dat het systeem in setup mode draait. Wil je meer informatie hierover dan is het vaak op de website van de fabrikant terug te vinden, of op YouTube hoe dit het beste aan te pakken is voor jouw specifieke machine.

Maak altijd een backup van je secure boot sleutel(s) zoals de fabrikant ze heeft geïnstalleerd!

1: Aanmaken eigen secure boot keys

De eerste stap is het aanmaken van je eigen secure boot keys. Sinds versie 257 heeft systemd daar ondersteuning voor in ukify. Om dit zo makkelijk mogelijk te maken:

  1. Maak de map /etc/kernel/keys aan, hier worden de keys in opgeslagen
  2. Maak het configuratiebestand /etc/kernel/uki.conf aan
  3. Genereer de key(s)

1.1: Het configuratiebestand /etc/kernel/uki.conf

Plaats het volgende in /etc/kernel/uki.conf:

[UKI]
SecureBootSigningTool=sbsign
SecureBootPrivateKey=/etc/kernel/keys/secureboot-private-key.pem
SecureBootCertificate=/etc/kernel/keys/secureboot-certificate.pem

1.2: Keys genereren

Dit is inmiddels erg simpel:

sudo ukify genkey --config /etc/kernel/uki.conf

Ondertekenen secure boot bootloader en updaten configuratie

Nadat de secureboot sleutel aangemaakt is is het een kwestie van het ondertekenen van de bootloader en het updaten van de installatie.

Ondertekenen secure boot bootloader

Dit is te doen met het volgende commando:

sudo sbsign --key /etc/kernel/keys/secureboot-private-key.pem --cert /etc/kernel/keys/secureboot-certificate.pem --output /usr/lib/systemd/boot/efi/systemd-bootx64.efi.signed /usr/lib/systemd/boot/efi/systemd-bootx64.efi

Updaten configuratie / bootloader

Na het ondertekenen van je bootloader is het een kwestie van de geïnstalleerde versie updaten zodat de net ondertekende versie gebruikt word. Ook past dit ook je configuratie aan dat de nieuw aangemaakte secure boot sleutel(s) geïmporteerd kunnen worden.

Doe dit met het volgende commando:

sudo bootctl install --secure-boot-auto-enroll yes --certificate /etc/kernel/keys/secureboot-certificate.pem --private-key /etc/kernel/keys/secureboot-private-key.pem

Dit maakt meteen de map /boot/efi/loader/keys/auto/ aan met daarin de volgende bestanden:

Dit zijn de secure boot sleutels die geïmporteerd moeten worden. Om ervoor te zorgen dat ze bij de volgende boot ook echt geïmporteerd worden voeg je de volgende regel toe aan het bestand /boot/efi/loader/loader.conf:

secure-boot-enroll force

Updaten kernel images

Voor de zekerheid is het een goed idee om je geïnstalleerde kernel iamges opnieuw te laten genereren om er zeker van te zijn dat ze ondertekend zijn met je secure boot sleutel.

sudo rm /boot/efi/EFI/Linux/*.efi
sudo kernel-install -v add-all

Rebooten

Zodra het updaten van je kernel image(s) gedaan is is het tijd om je machine te herstarten. Als alles goed is gegaan worden je secure boot sleutels geïmporteerd en zal het booten daarna gewoon verder gaan. Fingers crossed.

Als je machine herstart en je Fedora installatie boot kun je controleren of alles goed is gegaan met sudo bootctl status. Als het goed is zie je Secure Boot: enabled (user).