Tôi muốn sử dụng Khởi động an toàn với các khóa của riêng mình và với các hạt nhân mà tôi ký. Tôi đã khởi động được Grub, nhưng không phải với hạt nhân đã ký. Tôi nhận được thông báo này: "Lỗi: /vmlinuz-5.4.0.91-generic has invalid signature".
Đây là những gì tôi đã làm:
phím mkdir
phím cd
efi-readvar -v dbx -o dbx.esl
# (khởi động lại và xóa khóa safeboot mặc định trong cấu hình phần sụn)
xuất myuuid=e9ffcff5-9186-4da1-ae89-654000af85eb
# tạo khóa
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
cert-to-efi-sig-list -g "$myuuid" KEK.pem KEK.esl
cert-to-efi-sig-list -g "$myuuid" db.pem db.esl
#ký phím
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
# thêm khóa trong phần sụn
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
# xóa chữ ký hiện tại (tùy chọn, tôi đã thử xóa và không xóa)
sbattach --remove /boot/efi/EFI/BOOT/BOOTX64.EFI
sbattach --remove /boot/efi/EFI/ubuntu/grubx64.efi
sbatch --remove /boot/vmlinuz-5.4.0.91-generic
# dấu nhị phân
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
Lưu ý 1: Nếu có thể, tôi không muốn sử dụng mok, vì nó yêu cầu khởi động lại và tôi đang cố cài đặt bằng tập lệnh không giám sát.
Lưu ý 2: Tôi đã thử sử dụng shim-signed và khả năng khởi động hoạt động, nhưng nó vẫn khởi động mặc dù tôi không ký kernel, vì vậy tôi không cho rằng nó an toàn vì nó khởi động với bất kỳ kernel nào.
CHỈNH SỬA: Tôi sử dụng Ubuntu 20.04.3