このドキュメントでは、2025 年 11 月 7 日より前に作成したコンピューティング インスタンスで、セキュアブートの更新された証明書を信頼するように、許可された署名データベース(db)と鍵交換鍵(KEK)の変数を更新する手順について説明します。
KEK と db の更新は、影響を受けるコンピューティング インスタンスを再作成しないお客様向けの代替手段です。
始める前に
セキュアブート KEK 証明書と db 証明書を更新する前に、インスタンスで更新が必要かどうかを確認し、次の準備を完了して、起動や復号に関する潜在的な問題を回避します。
- 前提条件の確認: インスタンスでセキュアブート証明書の更新が必要であることを確認します。
- データの完全性とキーの復元: ディスク暗号化(BitLocker または LUKS FDE)の復元キーを見つけて、重要なデータをバックアップします。セキュリティ変数を変更すると、構成が正しくない場合にディスクへのアクセスがロックされる可能性があります。
- Linux の更新順序に関する推奨事項: Linux インスタンスでは、新しい shim に更新する前に、
dbUEFI 変数を Microsoft UEFI CA 2023 に更新することをおすすめします。このシーケンスにより、データベースに 2011 証明書のみが含まれているときに、Microsoft UEFI CA 2023 のみで署名された shim アップデートが適用された場合に発生する可能性のある CA の不一致を防ぐことができます。 - カスタム PK または KEK 構成: インスタンスがカスタムのセキュアブート変数(カスタムの
PKやKEKなど)を使用している場合、または Compute Engine 以外のシステムで実行している場合、このドキュメントで提供されている標準の更新ファイル(DBUpdate3P2023.binまたはkek2023update.bin)は直接適用されません。UEFI ファームウェアでは、システムに登録されたKEKまたはPKの秘密鍵で更新ファイルに署名する必要があります。また、kek2023update.binはデフォルトの Compute EnginePKで署名されます。カスタム鍵を使用する場合は、独自の秘密鍵で更新バイナリに署名するか、カスタム認証局を通じて更新を管理する必要があります。詳細については、KEK 更新エラーのトラブルシューティングをご覧ください。 - Cloud de Confiance by S3NS Backup and DR アプライアンス: 管理対象のアプライアンスです。これらのアプライアンスでセキュアブート証明書を手動で更新する必要はありません。 Cloud de Confiance by S3NS がすべての更新を自動的に管理します。
Linux で db と KEK を更新する
許可された署名データベース(db)とキー交換キー(KEK)を更新するには、オペレーティング システムのオプションを選択します。
Debian または Ubuntu
Debian または Ubuntu でセキュアブート証明書を更新するには、fwupd、efitools、または sbsigntool を使用します。
オプション 1: fwupd を使用して更新する(推奨)
証明書の更新には fwupd を使用することをおすすめします。このメソッドには fwupdmgr バージョン 2.0.10 以降が必要です。sudo fwupdmgr --version を実行してバージョンを確認します。
次のコマンドを実行します。
sudo fwupdmgr refresh
sudo fwupdmgr update 5bc922b7bd1adb5b6f99592611404036bd9f42d0
sudo fwupdmgr update b7a1d3d90faa1f6275d9a98da4fb3be7118e61c7
オプション 2: efitools を使用して更新する
efitools パッケージを使用して db 変数と KEK 変数を更新する手順は次のとおりです。
db を更新
Microsoft から Allowed Signature Database(
db)の更新バイナリをダウンロードします。wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bindb変数を更新します。sudo chattr -i /sys/firmware/efi/efivars/db-* 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ユーティリティをインストールします。sudo apt update && sudo apt install gcab -yアーカイブを抽出し、抽出された
kek2023update.binファイルの SHA-256 ハッシュが99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eafと一致することを確認します。gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab sha256sum kek2023update.bin更新を適用します。
sudo chattr -i /sys/firmware/efi/efivars/KEK-* sudo efi-updatevar -a -f kek2023update.bin KEK sudo chattr +i /sys/firmware/efi/efivars/KEK-*
オプション 3: sbsigntool を使用して更新する
sbsigntool パッケージの sbkeysync ユーティリティを使用して db 変数と KEK 変数を更新するには、sbsigntool と gcab をインストールします。
sudo apt update && sudo apt install sbsigntool gcab -y
db を更新
Microsoft から
dbアップデート バイナリをダウンロードします。wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin鍵を同期します。
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 証明書の更新をダウンロードして抽出します。
wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab抽出した
kek2023update.binファイルの SHA-256 ハッシュが99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eafと一致することを確認します。sha256sum kek2023update.bin鍵を同期します。
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-*
Red Hat Enterprise Linux(RHEL)
RHEL でセキュアブート証明書を更新するには、sbsigntools を使用します。RHEL イメージには、UEFI 証明書の更新をすぐにサポートしていない古いバージョンの fwupd が含まれている場合があります。
sbsigntools パッケージの sbkeysync ユーティリティを使用して db 変数と KEK 変数を更新する手順は次のとおりです。
EPEL リポジトリを有効にして、
sbsigntoolsとcabextractをインストールします。sudo dnf install epel-release -y sudo dnf install sbsigntools cabextract -ydb変数を更新する手順は次のとおりです。Microsoft から Allowed Signature Database(
db)の更新バイナリをダウンロードします。wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin鍵を同期します。
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 証明書の更新をダウンロードして抽出します。
wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab抽出した
kek2023update.binファイルの SHA-256 ハッシュが99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eafと一致することを確認します。sha256sum kek2023update.bin鍵を同期します。
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-*
SUSE Linux Enterprise Server(SLES)
SLES または openSUSE のセキュアブート証明書は、sbsigntools または efitools を使用して更新できます。SLES イメージには古いバージョンの fwupd が含まれているか、まったく含まれていない可能性があります。
オプション 1: sbsigntools を使用して更新する
sbsigntools パッケージの sbkeysync ユーティリティを使用して db 変数と KEK 変数を更新するには、SUSE Package Hub を有効にして、sbsigntools と cabextract をインストールします。
sudo SUSEConnect -p PackageHub/15.5/x86_64
sudo zypper install sbsigntools cabextract -y
db を更新
Microsoft から
dbアップデート バイナリをダウンロードします。wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin ```鍵を同期します。
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 証明書の更新をダウンロードして抽出します。
wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab ```抽出した
kek2023update.binファイルの SHA-256 ハッシュが99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eafと一致することを確認します。sha256sum kek2023update.bin ```鍵を同期します。
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-* ```
オプション 2: efitools を使用して更新する
efitools パッケージを使用して db 変数と KEK 変数を更新する手順は次のとおりです。
db を更新
Microsoft から Allowed Signature Database(
db)の更新バイナリをダウンロードします。wget https://github.com/microsoft/secureboot_objects/raw/main/PostSignedObjects/Optional/DB/DBUpdate3P2023.bin ```db変数を更新します。sudo chattr -i /sys/firmware/efi/efivars/db-* 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.cab ```SUSE Package Hub を有効にして、
gcabユーティリティをインストールします。sudo SUSEConnect -p PackageHub/15.5/x86_64 sudo zypper install gcab -y ``` Note: Replace `15.5` with your SLES version if different.アーカイブを抽出し、抽出された
kek2023update.binファイルの SHA-256 ハッシュが99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eafと一致することを確認します。gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab sha256sum kek2023update.bin ```更新を適用します。
sudo chattr -i /sys/firmware/efi/efivars/KEK-* sudo efi-updatevar -a -f kek2023update.bin KEK 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 回行う必要があります。
更新を確認する
fwupd、efitools、sbsigntool、または PowerShell を使用して更新を適用したら、インスタンスの UEFI 変数に 2023 年の証明書が存在することを確認します。
Linux
更新の適用に使用するツールに関係なく、証明書はインスタンスの UEFI NVRAM 変数に書き込まれます。mokutil(推奨)または efi-readvar を使用して、直接確認できます。
mokutilを使用する(推奨):mokutilは、ほとんどの Linux ディストリビューションにデフォルトでインストールされています。sudo mokutil --kek | grep "KEK 2K CA 2023" sudo mokutil --db | grep "UEFI CA 2023"efi-readvarを使用する:efitoolsがインストールされている場合は、次を実行します。sudo efi-readvar -v KEK | grep "KEK 2K CA 2023" sudo efi-readvar -v db | grep "UEFI CA 2023"
KEK 変数と db 変数の両方に 2023 年の証明書が表示されている場合は、更新が正常に適用されているため、これ以上の対応は不要です。
Windows
管理者 PowerShell プロンプトで、次のコマンドを実行します。
# Check for Microsoft KEK 2K CA 2023
[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI KEK).bytes) -match 'Microsoft Corporation KEK 2K CA 2023'
# Check for UEFI CA 2023
[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match 'UEFI CA 2023'
# Confirm general Secure Boot enrollment state
Confirm-SecureBootUEFI
KEK 更新エラーのトラブルシューティング
Linux で KEK 変数を更新するときに、db の更新(DBUpdate3P2023.bin)は成功するものの、KEK の更新(kek2023update.bin)が次のいずれかのエラーで失敗することがあります。
sbkeysyncを使用する場合:Inserting key update /etc/secureboot/keys/KEK/kek2023update.bin into KEK Error writing key update: Invalid argument Error syncing keystore file /etc/secureboot/keys/KEK/kek2023update.binefi-updatevarを使用する場合:Cannot write to KEK, wrong filesystem permissions
原因
UEFI セキュアブートでは、db アップデート(DBUpdate3P2023.bin)は Microsoft Corporation KEK CA 2011 によって署名されます。これは、ほとんどの UEFI セキュアブート システムでデフォルトで登録されています。ただし、KEK アップデートは、システムのファームウェアに登録されているプラットフォーム キー(PK)で署名する必要があります。ファームウェアが kek2023update.bin の署名を拒否するか、UEFI 変数への書き込みを禁止すると、Linux カーネルはエラーを返します。
このエラーは、次のいずれかの原因で発生します。
KEKUEFI 変数が変更不可としてマークされたままになっている: 書き込みオペレーションを試みる前にchattr -iコマンドが実行されませんでした。- インスタンスがカスタム
PKを使用している:1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cabアーカイブには、デフォルトの Compute EnginePKによってのみ署名されたkek2023update.binバイナリが含まれています。Compute Engine インスタンスまたはカスタム イメージにカスタムPKが登録されている場合、ファームウェアはkek2023update.binを拒否します。 - システムが Compute Engine インスタンスではない: これらのコマンドを物理ハードウェアまたは Compute Engine 外の仮想マシンで実行すると、システムの
PKは Compute Engine ではなくハードウェア メーカーまたはハイパーバイザ ベンダーに属するため、ファームウェアがkek2023update.binを拒否します。
解決策
エラーを診断して解決するには、次の操作を行います。
sbkeysyncまたはefi-updatevarを実行する直前に、KEK変数から不変属性を削除してください。sudo chattr -i /sys/firmware/efi/efivars/KEK-*インスタンスに登録されている
PKを検査します。sudo mokutil --pksudo mokutil --pkの出力に応じて、次のいずれかの操作を行います。- インスタンスがカスタム
PKを使用している場合: カスタムPKに対応する秘密鍵でKEK更新バイナリに署名するか、デフォルトの Compute Engine セキュアブート証明書に依存するイメージを使用して、ディスク スナップショットからコンピューティング インスタンスを再作成します。 - Compute Engine 以外のマシンを更新する場合:
/etc/secureboot/keys/KEK/kek2023update.binを削除し、ハードウェア メーカーまたはプラットフォーム ベンダーからKEKアップデートを取得します(たとえば、ベンダーがサポートしている場合はsudo fwupdmgr updateを実行します)。
- インスタンスがカスタム