更新 KEK 和資料庫憑證

本文提供操作說明,說明如何更新 2025 年 11 月 7 日前建立的運算執行個體,以信任安全啟動的更新憑證。更新內容包括允許的簽章資料庫 (db) 和金鑰交換金鑰 (KEK) 變數。

如果客戶不重新建立受影響的運算執行個體,可以改用 KEK 和資料庫更新。

事前準備

更新安全啟動 KEK 和 db 憑證前,請先確認執行個體是否需要更新,並完成下列準備工作,避免發生啟動或解密問題:

  • 先決條件驗證: 驗證執行個體是否需要更新安全啟動憑證。
  • 資料完整性和金鑰復原:找出磁碟加密 (BitLocker 或 LUKS FDE) 復原金鑰,並備份重要資料。如果設定有誤,變更安全變數可能會導致無法存取磁碟。
  • Linux 更新順序建議:如果是 Linux 執行個體,建議先將 db UEFI 變數更新為 Microsoft UEFI CA 2023,再更新至新版墊片。如果資料庫只包含 2011 年的憑證,而您套用只以 Microsoft UEFI CA 2023 簽署的墊片更新,這種排序方式有助於避免潛在的 CA 不符情況。
  • 自訂 PK 或 KEK 設定:如果執行個體使用自訂安全啟動變數 (例如自訂 PKKEK),本指南提供的標準更新檔案 (DBUpdate3P2023.binkek2023update.bin) 無法直接套用。UEFI 韌體需要使用系統上的 KEKPK 私密金鑰簽署更新檔案。如果您使用自訂金鑰,則必須使用自己的私密金鑰簽署更新二進位檔,或透過自訂憑證授權單位管理更新。
  • Cloud de Confiance by S3NS 備份和災難復原設備:這些是受管理的設備。您不必在這些設備上更新安全啟動憑證, Cloud de Confiance by S3NS 會自動管理所有更新。

在 Linux 上更新資料庫和 KEK

如要更新允許的簽章資料庫 (db) 和金鑰交換金鑰 (KEK),請選取作業系統適用的選項:

Debian 或 Ubuntu

您可以使用 fwupdefitoolssbsigntool,更新 Debian 或 Ubuntu 的安全啟動憑證。

建議使用 fwupd 更新憑證。這個方法需要 fwupdmgr 2.0.10 以上版本。執行 sudo fwupdmgr --version 即可確認版本。

執行下列指令:

sudo fwupdmgr refresh
sudo fwupdmgr update 5bc922b7bd1adb5b6f99592611404036bd9f42d0
sudo fwupdmgr update b7a1d3d90faa1f6275d9a98da4fb3be7118e61c7

方法 2:使用 efitools 更新

如要使用 efitools 套件更新 dbKEK 變數,請按照下列步驟操作:

更新資料庫
  1. 從 Microsoft 下載允許的簽章資料庫 (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 公用程式更新 dbKEK 變數,請安裝 sbsigntoolgcab

sudo apt update && sudo apt install sbsigntool gcab -y
更新資料庫
  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)

您可以使用 sbsigntools 更新 RHEL 的安全啟動憑證。RHEL 映像檔可能搭載舊版 fwupd,無法直接支援 UEFI 憑證更新。

如要使用 sbsigntools 套件中的 sbkeysync 公用程式更新 dbKEK 變數,請按照下列步驟操作:

  1. 啟用 EPEL 存放區,並安裝 sbsigntoolscabextract

    sudo dnf install epel-release -y
    sudo dnf install sbsigntools cabextract -y
    
  2. 如要更新 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-*
      
  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)

您可以使用 sbsigntoolsefitools,更新 SLES 或 openSUSE 的安全啟動憑證。SLES 映像檔可能使用舊版 fwupd,或完全不提供 fwupd

方法 1:使用 sbsigntools 更新

如要使用 sbsigntools 套件中的 sbkeysync 公用程式更新 dbKEK 變數,請啟用 SUSE Package Hub 並安裝 sbsigntoolscabextract

sudo SUSEConnect -p PackageHub/15.5/x86_64
sudo zypper install sbsigntools cabextract -y
更新資料庫
  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 套件更新 dbKEK 變數,請按照下列步驟操作:

更新資料庫
  1. 從 Microsoft 下載允許的簽章資料庫 (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 上更新資料庫和 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. 重新啟動執行個體,允許對韌體變數執行作業。如果虛擬化安全功能處於啟用狀態,部分環境需要重新啟動兩次。