Kali Linuxでセキュアブートすると、「エラー:/boot/vmlinuz-6.6.9-amd64署名が無効です。」

Kali Linuxでセキュアブートすると、「エラー:/boot/vmlinuz-6.6.9-amd64署名が無効です。」

セキュアブートが有効なKali Linuxシステムを実行しようとすると、GRUBは「error: /boot/vmlinuz-6.6.9-amd64 has invalid signature.セキュアブートをオフにしたくありません」を返します。私はここの指示に従いました。https://www.reddit.com/r/archlinux/comments/10pq74e/my_easy_method_for_setting_up_secure_boot_with
grub-install --target=x86_64-efi --efi-directory=/boot/efi --modules="tpm" --disable-shim-lockコマンドを使用してgrubを再インストールしました。
私はWindows 11とKali Linuxをダブルブートしています。
私はHP Envy x360を使用しています。

答え1

説明あなたがリンクしたRedditの投稿grubx64.efiインストールされたプログラムがMicrosoftによって署名されている場合にのみ機能しますgrub-install。明らかに、Archはこれに時間とお金を費やしたかもしれません。

Debianは仕事を別々に行うことを選び、KaliはDebianに基づいているので、同じアプローチがKaliでも機能します。 Debian のセキュアブートソリューションの中には、shimx64.efiMicrosoft 署名のみがあります。

/boot/efi/EFI/debian# pesign -S -i shimx64.efi 
---------------------------------------------
certificate address is 0x7f0756f2a498
Content was not encrypted.
Content is detached; signature cannot be verified.
The signer's common name is Microsoft Windows UEFI Driver Publisher  <--- Microsoft!
No signer email address.
No signing time included.
There were certs or crls included.
---------------------------------------------

Debian は実際に次のようにシムを作ります。再現可能なバイナリ、別々のMicrosoft署名をshimソースコードと共に別々のファイルとして提供することができ、shimを監査したい場合は、直接ビルドして署名を追加できます。正しいコンパイラバージョンと正確なプロセスにより、結果のビルドはDebianと100%同じであるため、署名が添付されている場合は有効です。

これにより、DebianのSecure Boot証明書がホワイトリストに非永続的に追加され、システムはgrubx64.efiDebian証明書で署名されたDebianを起動できます。

/boot/efi/EFI/debian# pesign -S -i grubx64.efi 
---------------------------------------------
certificate address is 0x7f87b4b03008
Content was not encrypted.
Content is detached; signature cannot be verified.
The signer's common name is Debian Secure Boot Signer 2022 - grub2  <- no MS, just Debian
No signer email address.
Signing time: Wed Oct 04, 2023
There were certs or crls included.
---------------------------------------------

これは、Microsoftが新しいバージョンに署名するのを待つ必要がないため、GRUBアップデートを通じてDebianにさらに柔軟性を提供します。シムは非常にシンプルで徹底的に監査されたコードスニペットである必要があるため、更新が少なくて済みます。

Kaliディストリビューションは明らかにDebianの秘密鍵にアクセスできないため、Kaliはディストリビューションに自己署名する必要があります。

Redditの投稿のレシピはブートローダの一部でsbctlあるように見え、基本的にのみこれに興味があります。これは明らかにRedditポスターが次のようにしなければならなかった理由です。systemd-bootsystemd-boot

セキュアブートが機能するには、どのファイルに署名する必要があるかを確認してください。

sudo sbctl verify

署名されていないすべての文書に署名します(署名する必要があるものは次のとおりです。必要に応じて調整してください)。

sudo sbctl sign -s /efi/EFI/GRUB/grubx64.efi

KaliがDebianのモデルに従う場合、Kaliのカーネルはすでに署名されていますが、使用されませんsbctl。おそらくsbctlカーネルが署名されたことを検出しただけなので、もう一度署名する必要があることを知らせないかもしれません。あなたのキー?

それとも、生成されたカーネルには複数の署名があります。これしなければならない可能ですが、おそらくSecure Boot仕様で十分にテストされていない領域なので、どこかにバグがある可能性があります。署名が誤って適用されて確認できないのではないでしょうか。それとも、UEFIファームウェア(GRUBのUEFIバージョンのようにファームウェアルーチンがディスクアクセスに使用される限り、セキュアブートシグネチャを検証する究極の責任)がマルチシグネチャブートファイルを処理するのにバグがありますか?

関連情報