ฉันต้องการใช้ Secure Boot กับคีย์ของตัวเองและเคอร์เนลที่ฉันลงชื่อ ฉันได้รับ Grub เพื่อบู๊ต แต่ไม่ใช่กับเคอร์เนลที่ลงชื่อ ฉันได้รับสิ่งนี้: ข้อความ "ข้อผิดพลาด: /vmlinuz-5.4.0.91-generic มีลายเซ็นไม่ถูกต้อง"
นี่คือสิ่งที่ฉันได้ทำ:
คีย์ mkdir
ซีดีคีย์
efi-readvar -v dbx -o dbx.esl
# (รีบูตและล้างคีย์การรักษาความปลอดภัยเริ่มต้นในการกำหนดค่าเฟิร์มแวร์)
ส่งออก myuuid=e9ffcff5-9186-4da1-ae89-654000af85eb
#สร้างกุญแจ
openssl req -subj "/CN=SecBoot PK cert/" -new -x509 -newkey rsa:2048 -nodes -days 730 -outform PEM -keyout "PK.key" -out "PK.pem"
openssl req -subj "/CN=SecBoot KEK cert/" -new -x509 -newkey rsa:2048 -nodes -days 730 -outform PEM -keyout "KEK.key" -out "KEK.pem"
openssl req -subj "/CN=SecBoot db cert/" -new -x509 -newkey rsa:2048 -nodes -days 730 -outform PEM -keyout "db.key" -out "db.pem"
cert-to-efi-sig-list -g "$myuuid" PK.pem PK.esl
ใบรับรองถึง efi-sig-list -g "$myuuid" KEK.pem KEK.esl
cert-to-efi-sig-list -g "$myuuid" db.pem db.esl
#กุญแจเซ็น
sign-efi-sig-list -g "$myuuid" -c PK.pem -k PK.key PK PK.esl PK.auth
sign-efi-sig-list -g "$myuuid" -c PK.pem -k PK.key KEK KEK.esl KEK.auth
sign-efi-sig-list -g "$myuuid" -c KEK.pem -k KEK.key db db.esl db.auth
sign-efi-sig-list -g "$myuuid" -c KEK.pem -k KEK.key dbx dbx.esl dbx.auth
# เพิ่มคีย์ในเฟิร์มแวร์
efi-updatevar -k PK.key -g "$myuuid" -f PK.auth PK
efi-updatevar -k PK.key -g "$myuuid" -f KEK.auth KEK
efi-updatevar -k KEK.key -g "$myuuid" -f db.auth db
efi-updatevar -k KEK.key -g "$myuuid" -f dbx.auth dbx
# ลบลายเซ็นปัจจุบัน (ไม่บังคับ ฉันลองลบแล้วแต่ไม่ลบ)
sbattach --remove /boot/efi/EFI/BOOT/BOOTX64.EFI
sbattach --remove /boot/efi/EFI/ubuntu/grubx64.efi
sbattach --remove /boot/vmlinuz-5.4.0.91-ทั่วไป
# เข้าสู่ระบบไบนารี
sbsign --key db.key --cert db.pem --output /boot/efi/EFI/BOOT/BOOTX64.EFI /boot/efi/EFI/BOOT/BOOTX64.EFI
sbsign --key db.key --cert db.pem --output /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/ubuntu/grubx64.efi
sbsign --key db.key --cert db.pem --output /boot/vmlinuz-5.4.0.91-generic /boot/vmlinuz-5.4.0.91-generic
หมายเหตุ 1: ถ้าเป็นไปได้ ฉันไม่ต้องการใช้ mok เพราะมันต้องรีบูตและฉันกำลังพยายามติดตั้งโดยใช้สคริปต์แบบอัตโนมัติ
หมายเหตุ 2: ฉันได้ลองใช้ shim-signed และการบูทแล้ว แต่มันบูทได้แม้ว่าฉันจะไม่ได้เซ็นชื่อเคอร์เนล ดังนั้นฉันจึงไม่คิดว่ามันปลอดภัยเพราะมันบูทด้วยเคอร์เนลใดๆ
แก้ไข: ฉันใช้ Ubuntu 20.04.3