选项 A:从实例内向变量存储中添加密钥
创建了三个密钥对后,您可以通过完成以下步骤连接到实例并从实例内将密钥添加到变量存储中。
步骤 1:启动将支持 UEFI 安全启动的实例
当您使用以下先决条件启动实例时,该实例将准备好配置为支持 UEFI 安全启动。您只能在启动时在实例上启用对 UEFI 安全启动的支持;无法在以后启用它。
先决条件
-
AMI – Linux AMI 必须支持 UEFI 启动模式。要验证 AMI 是否支持 UEFI 启动模式,AMI 启动模式参数必须为 uefi。有关更多信息,请参阅 确定 AMI 的启动模式参数。
请注意,Amazon 仅提供配置为支持基于 Graviton 实例类型的 UEFI 的 Linux AMI。Amazon 当前不提供支持 UEFI 启动模式的 x86_64 Linux AMI。您可以配置自己的 AMI 以支持所有架构的 UEFI 启动模式。若要配置自己的 AMI 以支持 UEFI 启动模式,您必须在自己的 AMI 上执行多个配置步骤。有关更多信息,请参阅设置 AMI 的启动模式。
-
实例类型 – 许多支持 UEFI 的虚拟化实例类型也支持 UEFI 安全启动。裸机实例类型不支持 UEFI 安全启动。有关支持 UEFI 安全引导的实例类型,请参阅 注意事项。
-
在 UEFI 安全启动发布后启动您的实例。只有在 2022 年 5 月 10 日(UEFI 安全启动发布时)之后启动的实例才能支持 UEFI 安全启动。
启动实例后,您可以通过检查是否存在 UEFI 数据来验证它是否已准备好配置为支持 UEFI 安全启动(换句话说,您可以继续步骤 2)。UEFI 数据的存在表明非易失性数据是持久的。
验证您的实例是否已为步骤 2 做好准备
使用 get-instance-uefi-data 命令并指定实例 ID。
aws ec2 get-instance-uefi-data --instance-id
i-0123456789example
如果输出中存在 UEFI 数据,则实例已准备好进入步骤 2。如果输出为空,则无法将实例配置为支持 UEFI 安全启动。如果您的实例在 UEFI 安全启动支持可用之前启动,则可能会发生这种情况。启动新实例,然后重试。
步骤 2:配置实例以支持 UEFI 安全启动
在实例上的 UEFI 变量存储中注册密钥对
警告
您必须在注册密钥之后签署启动映像,否则您将无法启动实例。
创建签名的 UEFI 签名列表后(PK
、KEK
和 db
),必须将它们注册到 UEFI 固件中。
只有在以下情况下才能写入 PK
变量:
-
尚未注册 PK,当
SetupMode
变量为1
时即表明这一点。使用以下命令检查此内容。输出为1
或0
。efivar -d -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-SetupMode
-
新 PK 由现有 PK 的私有密钥签名。
在 UEFI 变量存储中注册密钥
以下命令必须在实例上运行。
如果启用了 SetupMode(值为 1
),您可以通过在实例上运行以下命令注册密钥:
[ec2-user ~]$
efi-updatevar -f db.auth db
[ec2-user ~]$
efi-updatevar -f KEK.auth KEK
[ec2-user ~]$
efi-updatevar -f PK.auth PK
验证 UEFI 安全启动是否已启用
要验证 UEFI 安全启动是否已启用,请遵照 验证实例是否启用了 UEFI 安全启动 中的步骤。
现在,您可以使用 get-instance-uefi-data CLI 命令导出 UEFI 变量存储,或者继续执行下一步并签署启动映像,以重新启动到启用了 UEFI 安全启动的实例中。
步骤 3:从实例创建 AMI
要从实例创建 AMI,您可以使用控制台或 CreateImage
API、CLI 或开发工具包。有关控制台说明,请参阅创建一个由 Amazon EBS 支持的 Linux AMI。有关 API 说明,请参阅 CreateImage。
注意
CreateImage
API 会自动将实例的 UEFI 变量存储复制到 AMI。控制台会使用 CreateImage
API。使用此 AMI 启动实例后,实例将具有相同的 UEFI 变量存储。