このドキュメントでは、2025 年 11 月 7 日より前に作成したコンピューティング インスタンスで、セキュアブートの更新された証明書を信頼するように、許可された署名データベース(db)と鍵交換鍵(KEK)の変数を更新する手順について説明します。
KEK と db の更新は、影響を受けるコンピューティング インスタンスを再作成しないお客様向けの代替手段です。
再起動の要件に関する注: Windows とは異なり、Linux では、KEK と db 署名の更新を UEFI 変数に書き込むためにシステムの再起動は必要ありません。Linux は、コマンドの実行時に更新を NVRAM またはファームウェア ストレージに直ちに書き込みます。
始める前に
セキュアブート KEK 証明書と db 証明書を更新する前に、インスタンスで更新が必要かどうかを確認し、起動や復号に関する問題が発生しないように次の準備を完了します。
- 前提条件の確認: インスタンスでセキュア ブート証明書の更新が必要であることを確認します。
- データの完全性とキーの復元: ディスク暗号化(BitLocker または LUKS FDE)の復元キーを見つけて、重要なデータをバックアップします。セキュリティ変数を変更すると、構成が正しくない場合にディスクへのアクセスがロックされる可能性があります。
- Linux アップデートの順序に関する推奨事項: Linux インスタンスの場合は、新しい shim に更新する前に、
dbUEFI 変数を Microsoft UEFI CA 2023 に更新することをおすすめします。このシーケンスにより、データベースに 2011 証明書のみが含まれている状態で、Microsoft UEFI CA 2023 のみで署名された shim アップデートが適用された場合に発生する可能性のある CA の不一致を防ぐことができます。 - カスタム PK または KEK 構成: インスタンスがカスタム セキュアブート変数(カスタム
PKやKEKなど)を使用している場合、このガイドで提供されている標準の更新ファイル(DBUpdate3P2023.binまたはkek2023update.bin)は直接適用されません。UEFI ファームウェアでは、システムに存在するKEKまたはPKの秘密鍵でアップデート ファイルに署名する必要があります。カスタム鍵を使用する場合は、独自の秘密鍵でアップデート バイナリに署名するか、カスタム認証局を通じてアップデートを管理する必要があります。
fwupd を使用して Linux で db と KEK を更新する
fwupdmgr バージョン 2.0.10 以降では、このメソッドがサポートされています。バージョンを確認するには、sudo fwupdmgr --version を実行します。
RHEL 8/9 と SLES 15 に関する注: RHEL 8/9 と SUSE Linux Enterprise Server(SLES)15 のエンタープライズ リポジトリには、必要なバージョンしきい値を満たさない以前のバージョンの fwupdmgr が用意されています(RHEL 8 はバージョン 1.7.8、RHEL 9 はバージョン 1.9.13、SLES 15 SP6 は 1.9.10)。RHEL 8/9 または SLES 15 を実行している場合は、ソースから fwupd をビルドするか、後で説明する sbsigntool/sbsigntools または efitools メソッドを使用する必要があります。
SLES 12/15 に関する注: SLES 12/15 のエンタープライズ リポジトリには fwupd が用意されていません。SLES 15 の SUSE Package Hub リポジトリには、必要なバージョンしきい値を満たさない以前のバージョンの fwupdmgr が用意されています。SLES 12 を実行している場合は、ソースから fwupd をビルドする必要があります。SLES 15 を実行している場合は、ソースから fwupd をビルドするか、SUSE Package Hub から入手可能なバックポートを使用して、後述の efitools メソッドまたは sbsigntools メソッドのいずれかを使用する必要があります。
以下のコマンドを実行します。
sudo fwupdmgr refresh
sudo fwupdmgr update 5bc922b7bd1adb5b6f99592611404036bd9f42d0
sudo fwupdmgr update b7a1d3d90faa1f6275d9a98da4fb3be7118e61c7
efitools を使用して Linux で db と KEK を更新する
次の手順では、efitools パッケージを使用して db 変数と KEK 変数を更新する方法について説明します。
db の更新
Microsoft のリポジトリから更新バイナリをダウンロードします。
wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.bin変数を変更可能にします。書き込み保護フラグを削除します。
sudo chattr -i /sys/firmware/efi/efivars/db-*efi-updatevarを実行して変数を更新します。sudo efi-updatevar -a -f DBUpdate3P2023.bin db書き込み保護フラグを復元して、変数を保護します。
sudo chattr +i /sys/firmware/efi/efivars/db-*
KEK の更新
証明書の更新を含む
.cabアーカイブをダウンロードします。wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cabgcabがインストールされていない場合は、インストールします。たとえば、次のいずれかを実行します。Debian または Ubuntu の場合:
sudo apt update sudo apt install gcabSUSE Linux Enterprise Server(SLES)または openSUSE の場合(SUSE Package Hub が必要):
sudo SUSEConnect -p PackageHub/15.5/x86_64 sudo zypper install gcab(注:
15.5が異なる場合は、SLES のバージョンに置き換えてください)。
gcabを使用してアーカイブを抽出します。gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cabファイルの MD5 ハッシュが
6a1c58e1b8391c0e3f2e97f83917807aであることを確認します。md5sum kek2023update.binKEK変数を変更可能にします。sudo chattr -i /sys/firmware/efi/efivars/KEK-*更新を適用します。
sudo efi-updatevar -a -f kek2023update.bin KEK書き込み保護フラグを復元して、変数を保護します。
sudo chattr +i /sys/firmware/efi/efivars/KEK-*
sbsigntool または sbsigntools を使用して Linux で db と KEK を更新する
次の手順では、sbsigntool パッケージまたは sbsigntools パッケージの sbkeysync ユーティリティを使用して、db 変数と KEK 変数を更新する方法について説明します。
パッケージ名と可用性に関する注:
- Debian と Ubuntu では、ユーティリティ パッケージの名前は
sbsigntoolです(末尾に「s」はありません)。インストールするには、sudo apt install sbsigntoolを実行します。 - Red Hat Enterprise Linux(RHEL)、CentOS、Fedora ベースのディストリビューションでは、ユーティリティ パッケージの名前は
sbsigntools(末尾に「s」が付く)です。このパッケージは、EPEL(Extra Packages for Enterprise Linux)リポジトリで提供されています。RHEL にインストールするには、EPEL リポジトリ(sudo dnf install epel-release)を有効にしてから、sudo dnf install sbsigntoolsを実行します。 - SUSE Linux Enterprise Server(SLES)と openSUSE も、ユーティリティ パッケージに
sbsigntoolsという名前を付けています。このパッケージは、SUSE Package Hub リポジトリで提供されます。インストールするには、SUSE Package Hub(たとえばsudo SUSEConnect -p PackageHub/15.5/x86_64。15.5は SLES のバージョンに置き換えます)を有効にしてから、sudo zypper install sbsigntoolsを実行します。
db の更新
Microsoft のリポジトリから更新バイナリをダウンロードします。
wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.binファイルを
sbkeysyncの適切なフォルダに配置し、dbを変更可能にして、同期を実行します。sudo mkdir -p /etc/secureboot/keys/db sudo cp DBUpdate3P2023.bin /etc/secureboot/keys/db/ sudo chattr -i /sys/firmware/efi/efivars/db-* sudo sbkeysync --verbose書き込み保護フラグを復元して、変数を保護します。
sudo chattr +i /sys/firmware/efi/efivars/db-*
KEK の更新
KEK 変数を更新するには、Microsoft KEK 更新キャビネット アーカイブをダウンロードし、更新バイナリを抽出して、sbkeysync ユーティリティを使用して同期します。以降のセクションでは、ディストリビューションに基づいてバイナリを抽出する方法について説明します。
KEK 証明書の更新を含む
.cabアーカイブをダウンロードします。wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab.cabアーカイブを抽出して、KEK 更新バイナリ(kek2023update.bin)を取得します。Debian/Ubuntu で
gcabユーティリティを使用する場合:sudo apt update && sudo apt install gcab -y gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cabEPEL の
cabextractユーティリティを使用する RHEL/CentOS ベースのディストリビューション(RHEL 8/9 など)の場合:sudo dnf install epel-release -y sudo dnf install cabextract -y cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cabSUSE Package Hub の
cabextractユーティリティを使用して、SUSE Linux Enterprise Server(SLES)と openSUSE で次の操作を行います。sudo SUSEConnect -p PackageHub/15.5/x86_64 sudo zypper install cabextract -y cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab(注:
15.5が異なる場合は、SLES のバージョンに置き換えてください)。
抽出された
kek2023update.binファイルの MD5 ハッシュが想定どおりの6a1c58e1b8391c0e3f2e97f83917807aであることを確認します。md5sum kek2023update.binバイナリを
sbkeysyncの適切なフォルダに配置し、KEK変数を可変にして、同期を実行します。sudo mkdir -p /etc/secureboot/keys/KEK sudo cp kek2023update.bin /etc/secureboot/keys/KEK/ sudo chattr -i /sys/firmware/efi/efivars/KEK-* sudo sbkeysync --verbose書き込み保護フラグを復元して、変数を保護します。
sudo chattr +i /sys/firmware/efi/efivars/KEK-*
Windows で db と KEK を更新する
このインスタンスでセキュアブートを使用しない場合、または使用する予定がない場合は、これらの証明書の更新を適用する必要はありません。通常、Windows オペレーティング システムは、セキュアブートが有効になっていない場合、セキュアブート証明書の更新を適用しようとする試みを無視します。これは、更新が不要であるためです。
後でセキュアブートを使用する場合は、まずインスタンスでセキュアブートを有効にして、セキュアブート証明書を更新する必要があります。
Windows インスタンスでは、レジストリ設定とスケジュール設定されたタスクにより、互換性のあるバージョンで更新がトリガーされます。
- Windows インスタンスに最新の月次アップデートが適用されていることを確認します。
PowerShell で管理者として次のコマンドを実行します。
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name "AvailableUpdates" -Value 0x5944 Start-ScheduledTask -TaskName "\Microsoft\Windows\PI\Secure-Boot-Update"インスタンスを再起動して、ファームウェア変数に対するオペレーションを許可します。仮想化セキュリティ機能が有効になっている環境では、再起動を 2 回行う必要があります。