

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AL2023 上的 UEFI 安全開機
<a name="uefi-secure-boot"></a>

AL2023 支援從 2023.1 版開始的 UEFI 安全開機。您必須將 AL2023 與同時支援 UEFI 和 UEFI 安全開機的 Amazon EC2 執行個體搭配使用。如需詳細資訊，請參閱《[Amazon EC2 使用者指南》中的在 UEFI 開機模式下啟動 Amazon EC2 執行個體的要求](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launch-instance-boot-mode.html)。 *Amazon EC2 *

啟用 UEFI 安全開機的 AL2023 執行個體僅接受由 簽署的核心層級程式碼，包括 Linux 核心和模組，Amazon因此您可以確保執行個體僅執行由 簽署的核心層級程式碼 AWS。

 如需 Amazon EC2 執行個體和 UEFI 安全開機的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 執行個體的 UEFI 安全開機](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/uefi-secure-boot.html)。 *Amazon EC2 *

**先決條件**
+ 您必須使用 AL2023 版本 2023.1 或更新版本的 AMI。
+ 執行個體類型必須支援 UEFI 安全開機。如需詳細資訊，請參閱《[Amazon EC2 使用者指南》中的在 UEFI 開機模式下啟動 Amazon EC2 執行個體的要求](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launch-instance-boot-mode.html)。 *Amazon EC2 *

## 在 AL2023 上啟用 UEFI 安全開機
<a name="enablement"></a>

標準 AL2023 AMI 包含開機載入器和由我方金鑰簽章的核心。您可以透過註冊現有執行個體或透過預先啟用 UEFI 安全開機建立 AMI，方法是從快照註冊映像來啟用 UEFI 安全開機。標準 AL2023 AMI 預設不會啟用 UEFI 安全開機。

AL2023 AMI 的開機模式已設定為 `uefi-preferred`，如果執行個體類型支援 UEFI，則可確保透過這些 AMI 啟動的執行個體將使用 UEFI 韌體。如果執行個體類型不支援 UEFI，則會在舊版 BIOS 上啟動執行個體。執行個體在舊版 BIOS 模式中啟動時，不會強制執行 UEFI 安全開機。

如需 Amazon EC2 執行個體上 AMI 開機模式的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的使用 Amazon EC2 開機模式的執行個體啟動行為](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-boot.html)。 *Amazon EC2 *

**Topics**
+ [在 AL2023 上啟用 UEFI 安全開機](#enablement)
+ [註冊現有執行個體](#enrollment-existing-instance)
+ [從快照註冊映像](#secure-boot-amis)
+ [撤銷更新](#revocation-updates)
+ [UEFI 安全開機在 AL2023 上的運作方式](#shim-use)
+ [註冊自有金鑰](#enrolling-own-keys)

## 註冊現有執行個體
<a name="enrollment-existing-instance"></a>

若要註冊現有的執行個體，請在特定 UEFI 韌體變數中填入一組金鑰，讓韌體能夠驗證開機載入器，以便開機載入器在下次開機時驗證核心。

1. Amazon Linux 提供簡化註冊過程的工具。執行下列命令以佈建執行個體，並使用必要的金鑰和憑證集合來佈建執行個體。

   ```
   sudo amazon-linux-sb enroll
   ```

1. 執行下列命令重新開機 執行個體。執行個體重新開機後，將會啟用 UEFI 安全開機。

   ```
   sudo reboot
   ```

**注意**  
Amazon Linux AMI 目前不支援 Nitro 信任平台模組 (NitroTPM)。如果除了 UEFI 安全開機之外，您還需要 NitroTPM，請使用下一節中的資訊。

## 從快照註冊映像
<a name="secure-boot-amis"></a>

使用 Amazon EC2 `register-image` API 並從 Amazon EBS 根磁碟區的快照註冊 AMI 時，您可以使用包含 UEFI 變數存放區狀態的二進位 Blob 佈建 AMI。透過提供 AL2023 `UefiData`，即可啟用 UEFI 安全開機，而且不需要遵循上一節中的步驟。

如需建立和使用二進位 Blob 的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[建立包含預先填入變數存放區的二進位 Blob](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami-with-uefi-secure-boot.html#uefi-secure-boot-optionB)。

AL2023 提供可直接在 Amazon EC2 執行個體上使用且預先建置的二進位 Blob。二進位 Blob 位於執行中執行個體的 `/usr/share/amazon-linux-sb-keys/uefi.vars`。此 Blob 是由 `amazon-linux-sb-keys` RPM 套件提供，此套件從 2023.1 版開始預設安裝在 AL2023 AMI 上。

**注意**  
若要確保您使用的是最新版本的金鑰和撤銷，請使用您用來建立 AMI 的相同 AL2023 版本中的 Blob。

註冊映像時，建議使用設定為 `uefi` 的 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RegisterImage.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RegisterImage.html)API `BootMode` 參數。這可讓您透過將 `TpmSupport` 參數設定為 `v2.0` 來啟用 NitroTPM。此外，將 `BootMode` 設定為 `uefi` 可確保啟用 UEFI 安全開機，且在切換至不支援 UEFI 的執行個體類型時，無法意外停用。

如需 NitroTPM 的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的適用於 Amazon EC2 執行個體的 NitroTPM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitrotpm.html)。 *Amazon EC2 *

## 撤銷更新
<a name="revocation-updates"></a>

Amazon Linux 可能需要發行新版本的開機載入器 `grub2`，或使用更新金鑰簽署的 Linux 核心。在這種情況下，可能需要撤銷舊金鑰，以防止有人藉由舊版開機載入器的可利用錯誤繞過 UEFI 安全開機驗證程序。

`grub2` 或 `kernel` 套件的套件更新一律會自動將撤銷清單更新至執行中執行個體的 UEFI 變數存放區。這表示啟用 UEFI 安全開機並安裝套件的安全更新後，您將無法再執行舊版的套件。

## UEFI 安全開機在 AL2023 上的運作方式
<a name="shim-use"></a>

與其他 Linux 發行版不同，Amazon Linux 不提供稱為 Shim 的額外元件來作為第一階段的開機載入器。Shim 通常使用 Microsoft 金鑰簽署。例如，在具有 Shim 的 Linux 發行版上，Shim 會載入 `grub2` 開機載入器並 Shim 自己的程式碼來驗證 Linux 核心。此外，Shim 會在位於 UEFI 變數存放區的機器擁有者金鑰 (MOK) 資料庫中維護自有金鑰和撤銷組合，並透過 `mokutil` 工具控制。

Amazon Linux 不提供 Shim。由於 AMI 擁有者控制 UEFI 變數，因此不需要此中繼步驟，而且會對啟動和開機時間產生不利影響。此外，我們選擇預設不包括對任何供應商金鑰的信任，以減少不需要的二進位檔案可以執行的機會。與往常一樣，如果客戶選擇這樣做，則可以包含二進位檔案。

使用 Amazon Linux 時，UEFI 可以直接載入並驗證 `grub2` 開機載入器。`grub2` 開機載入器已修改為在載入 Linux 核心後使用 UEFI 對其進行驗證。因此，系統會使用儲存在一般 UEFI `db` 變數 (授權金鑰資料庫) 中的相同憑證來驗證 Linux 核心，並針對與開機載入器和其他 UEFI 二進位檔案相同的 `dbx` 變數 (撤銷資料庫) 進行測試。由於我們提供自有 PK 和 KEK 金鑰，用於控制對 db 資料庫和 dbx 資料庫的存取，因此我們可以根據需要發行已簽章的更新和撤銷，而無需中介 (如 Shim)。

如需 UEFI 安全開機的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 UEFI 安全開機如何與 Amazon EC2 執行個體搭配使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-uefi-secure-boot-works.html)。 *Amazon EC2 *

## 註冊自有金鑰
<a name="enrolling-own-keys"></a>

如上一節所述，Amazon Linux 不需要在 Amazon EC2 上使用 `shim` 以進行 UEFI 安全開機。當您正在閱讀其他 Linux 發行版的文件時，您可能會發現使用 `mokutil` 管理機器擁有者金鑰 (MOK) 資料庫的說明文件，且這些資料庫不在 AL2023 中。`shim` 和 MOK 環境解決在 UEFI 韌體中註冊金鑰的特定限制，這些限制不適用於 Amazon EC2 實作 UEFI 安全開機的方式。使用 Amazon EC2 時，有一些機制可以輕鬆地直接操作 UEFI 變數存放區中的金鑰。

如果您想要註冊自己的金鑰，您可以透過在現有執行個體內操作變數存放區 （請參閱[從執行個體內將金鑰新增至變數存放](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami-with-uefi-secure-boot.html#uefi-secure-boot-optionA)區） 或建構預先填入的二進位 Blob （請參閱[建立包含預先填入變數存放區的二進位 Blob) ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami-with-uefi-secure-boot.html#uefi-secure-boot-optionB)來執行此操作。