grub-mkimage
Linux-Mintで64ビットefi grub2ブートファイルを構築できます。しかし、シグネチャースペーサーで使用できるものを作りたいです。
bootx64.efi - 署名されたシム(例:Ubuntuから)
grubx64.efi - grub2(Ubuntuなど)
セーフブートモードでは正常に起動します。ただし、grubx64.efi
そのファイルでビルドしたファイルを置き換えると、安全でないブートモードでのみブートされます。
スクリプトgrub-mkimage
が公開鍵を提供しているようです。これは私が追加する必要がありますか?それでは、キーはどこから取得し、どのように追加しますか?
答え1
-m
組み込みの公開鍵オプションを使用すると、grub-mkimage
GRUBが読み取るすべてのファイルに署名するために使用されます。これはGPGスタイルの分離署名ファイル(*.sig
)を使用します。しかし、セキュアブート自体とは何の関係もありません。
セキュアブート署名にはさまざまな種類の署名が必要です。セキュアブート互換性署名は、PE32+バイナリ自体に組み込まれています。これらの署名を実行できるツールは少なくとも3つあります。
sbsign
~からsbsigntools 作成者: Jeremy Kerr/Ubuntupesign
渡すピーター・ジョーンズ/レッドハット。osslsigncode
渡すマイケル・トロイナラ
マシン所有者キー(MOK)を使用するには、shimを設定する必要があります。を使用してこれを行うことができますmokutil
。あるいは、Debian/Ubuntu 関連のディストリビューションでupdate-secureboot-policy
作業を行う際に初心者に、より使い慣れたスクリプトを提供することもできます。これにより、MOK証明書(DER形式)とその秘密鍵を見つけることができます/var/lib/shim-signed/mok
。
署名ツールにはPEM形式のMOK証明書が必要sbsign
です。osslsigncode
秘密鍵はすでにPEM形式です。証明書の変換は簡単です。
sudo openssl x509 -inform DER -in /var/lib/shim-signed/mok/MOK.der -outform PEM -out ~/MOK_certificate.pem
このpesign
ツールには、NSSスタイルの証明書データベースに保存されているMOKが必要です。openssl pkcs12 -export
まず、証明書と秘密鍵を単一のPKCS#12ファイルに変換してから、そのファイルを新しいNSS証明書データベースディレクトリ(、およびpk12util
3つのファイルを含む)にインポートできます。cert8.db
key3.db
secmod.db
その後、上記のツールのいずれかを使用して、grubx64.efi
MOK証明書とその秘密鍵で署名できます。
sbsign --key <MOK private key file.pem> --cert <MOK certificate.pem> --output grubx64.efi.signed grubx64.efi
# or
pesign --in=grubx64.efi --out=grubx64.efi.signed -c <name of certificate in NSS certificate store> -n <NSS certificate store directory> -s
# or
osslsigncode -certs <MOK certificate.pem> -key <MOK private key file.pem> -h sha256 -in grubx64.efi -out grubx64.efi.signed
答え2
shimに含まれるキーにアクセスする必要があります。これはビルドサービスへのアクセスを意味する可能性が高いです(一部の権限がある可能性があります)。 grubパッケージマネージャに連絡してください。私はいくつかの詳細を見つけました。ここその時、これはすべて台無しだった…