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:
- Dit alleen werkt met Fedora 42 en hoger, want hiervoor is systemd versie 257 (of nieuwer) nodig
- Dit de fabrieks secure boot sleutels zal wissen van je systeem
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:
- Secure boot uitzetten in je UEFI om ervoor te zorgen dat je je installatie (van Fedora) kunt blijven opstarten / gebruiken
- De platform key weggooien in de secure boot instellingen in je UEFI
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:
- Maak de map
/etc/kernel/keysaan, hier worden de keys in opgeslagen - Maak het configuratiebestand
/etc/kernel/uki.confaan - 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:
PK.authKEK.authdb.auth
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).