KEK と db 証明書を更新する

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

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

始める前に

セキュアブート KEK 証明書と db 証明書を更新する前に、インスタンスで更新が必要かどうかを確認し、次の準備を完了して、起動や復号化に関する潜在的な問題を回避します。

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

Linux で db と KEK を更新する

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

Debian または Ubuntu

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

証明書の更新には 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 変数を更新する手順は次のとおりです。

  1. 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 変数を更新する手順は次のとおりです。

  1. 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
    
  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 回行う必要があります。