KEK と db 証明書を更新する

このドキュメントでは、2025 年 11 月 7 日より前に作成したコンピューティング インスタンスで、セキュアブートの更新された証明書を信頼するように、Allowed Signature Database(db)変数と Key Exchange Key(KEK)変数を更新する手順について説明します。

KEK と db の更新は、影響を受けるコンピューティング インスタンスを再作成しないお客様向けの代替手段です。

始める前に

セキュアブートの KEK 証明書と db 証明書を更新する前に、インスタンスの更新が必要かどうかを確認し、ブートや復号化の問題が発生しないように次の準備を行います。

  • 前提条件の確認: インスタンスでセキュアブート証明書の更新が必要であることを確認します。
  • データの整合性と鍵の復元: ディスク暗号化(BitLocker または LUKS FDE)の復元キーを見つけて、重要なデータをバックアップします。構成が正しくないと、セキュリティ変数を変更するとディスクへのアクセスがロックされる可能性があります。
  • Linux の更新順序に関する推奨事項: Linux インスタンスの場合は、新しい shim に更新する前に、db UEFI 変数を Microsoft UEFI CA 2023 に更新することをおすすめします。この順序にすることで、データベースに 2011 証明書のみが含まれているときに、Microsoft UEFI CA 2023 のみで署名された shim アップデートが適用された場合に発生する可能性のある CA の不一致を回避できます。
  • カスタム PK または KEK 構成: インスタンスでカスタムのセキュアブート変数(カスタムの PKKEK など)を使用している場合、このガイドで提供されている標準の更新ファイル(DBUpdate3P2023.bin または kek2023update.bin)は直接適用されません。UEFI ファームウェアでは、更新ファイルがシステムに存在する KEK または PK の秘密鍵で署名されている必要があります。カスタム鍵を使用する場合は、独自の秘密鍵で更新バイナリに署名するか、カスタム認証局を使用して更新を管理する必要があります。
  • Google Cloud バックアップと DR アプライアンス: これらはマネージド アプライアンスです。これらのアプライアンスでセキュアブート証明書を手動で更新する必要はありません。 Google Cloud はすべての更新を自動的に管理します。

Linux で db と KEK を更新する

Allowed Signature Database(db)と Key Exchange Key(KEK)を更新するには、オペレーティング システムのオプションを選択します。

Debian または Ubuntu

Debian または Ubuntu でセキュアブート証明書を更新するには、fwupdefitoolssbsigntool を使用します。

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 を更新する
  1. Microsoft から Allowed Signature Database(db)の更新バイナリをダウンロードします。

     wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.bin
    
  2. 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 を更新する
  1. 証明書の更新を含む .cab アーカイブをダウンロードします。

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
    
  2. gcab ユーティリティをインストールします。

     sudo apt update && sudo apt install gcab -y
    
  3. アーカイブを抽出して、抽出した kek2023update.bin ファイルの SHA-256 ハッシュが 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf と一致することを確認します。

     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     sha256sum kek2023update.bin
    
  4. 更新を適用します。

     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 変数を更新するには、sbsigntoolgcab をインストールします。

sudo apt update && sudo apt install sbsigntool gcab -y
db を更新する
  1. Microsoft から db の更新バイナリをダウンロードします。

     wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.bin
    
  2. 鍵を同期します。

     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 を更新する
  1. KEK 証明書の更新をダウンロードして抽出します。

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
    
  2. 抽出した kek2023update.bin ファイルの SHA-256 ハッシュが 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf と一致することを確認します。

     sha256sum kek2023update.bin
    
  3. 鍵を同期します。

     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 変数を更新するには、次の操作を行います。

  1. EPEL リポジトリを有効にして、sbsigntoolscabextract をインストールします。

    sudo dnf install epel-release -y
    sudo dnf install sbsigntools cabextract -y
    
  2. db 変数を更新するには、次の操作を行います。

    1. Microsoft から Allowed Signature Database(db)の更新バイナリをダウンロードします。

      wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.bin
      
    2. 鍵を同期します。

      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-*
      
  3. KEK 変数を更新するには、次の操作を行います。

    1. KEK 証明書の更新をダウンロードして抽出します。

      wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
      cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
      
    2. 抽出した kek2023update.bin ファイルの SHA-256 ハッシュが 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf と一致することを確認します。

      sha256sum kek2023update.bin
      
    3. 鍵を同期します。

      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 を有効にして、sbsigntoolscabextract をインストールします。

sudo SUSEConnect -p PackageHub/15.5/x86_64
sudo zypper install sbsigntools cabextract -y
db を更新する
  1. Microsoft から db の更新バイナリをダウンロードします。

     wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.bin
     ```
    
  2. 鍵を同期します。

     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 を更新する
  1. KEK 証明書の更新をダウンロードして抽出します。

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     ```
    
  2. 抽出した kek2023update.bin ファイルの SHA-256 ハッシュが 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf と一致することを確認します。

     sha256sum kek2023update.bin
     ```
    
  3. 鍵を同期します。

     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 を更新する
  1. Microsoft から Allowed Signature Database(db)の更新バイナリをダウンロードします。

     wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.bin
     ```
    
  2. 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 を更新する
  1. 証明書の更新を含む .cab アーカイブをダウンロードします。

     wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     ```
    
  2. 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.
    
  3. アーカイブを抽出して、抽出した kek2023update.bin ファイルの SHA-256 ハッシュが 99e340f5cfd7aa3698f80237b51e460fc6367111876f39b4a9e1d1aa495d5eaf と一致することを確認します。

     gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab
     sha256sum kek2023update.bin
     ```
    
  4. 更新を適用します。

     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 インスタンスでは、レジストリ設定とスケジュールされたタスクによって、互換性のあるバージョンで更新がトリガーされます。

  1. Windows インスタンスに最新の月次更新が適用されていることを確認します。
  2. PowerShell で管理者として次のコマンドを実行します。

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name "AvailableUpdates" -Value 0x5944
    Start-ScheduledTask -TaskName "\Microsoft\Windows\PI\Secure-Boot-Update"
    
  3. インスタンスを再起動して、ファームウェア変数に対するオペレーションを許可します。仮想化セキュリティ機能が有効になっている場合は、環境によっては 2 回再起動する必要があります。