6.4. 使用自定义 RHEL 镜像配置带有安全引导的 RHEL 实例


要确保 AWS 上的 RHEL 实例有安全引导序列,请使用安全引导。当注册自定义 RHEL Amazon 机器镜像(AMI)时,镜像由安全引导的预存储统一固件接口(UEFI)变量组成。这可让从 RHEL AMI 启动的所有实例都使用带有第一次引导时所需的变量的安全引导机制。

先决条件

  1. 您已创建了并上传 AWS AMI 镜像。详情请参阅 创建和上传 AWS AMI
  2. 您已安装了以下软件包:

    • awscli2
    • python3
    • openssl
    • efivar
    • keyutils
    • python3-virt-firmware

流程

  1. 创建新的随机通用唯一标识符(UUID),并将其存储在系统生成的文本文件中:

    $ uuidgen --random > GUID.txt
    Copy to Clipboard Toggle word wrap
  2. 为平台密钥数据库生成一个新的 RSA 私钥 PK.key 和自签名 X.509 证书 PK.cer

    $ openssl req -quiet \
    -newkey rsa:3072 \
    -nodes -keyout PK.key \
    -new -x509 -sha256 \
    -days 3650 \
    -outform DER -out PK.cer
    Copy to Clipboard Toggle word wrap

    openssl 工具通过将输出格式设置为可辨识的编码规则(DER)来为证书生成一个通用名称平台密钥。

  3. 为密钥交换密钥数据库生成一个新的 RSA 私钥 KEK.key 和自签名 X.509 证书 KEK.cer

    $ openssl req -quiet \
    -newkey rsa:3072 \
    -nodes -keyout KEK.key \
    -new -x509 -sha256 \
    -days 3650 \
    -subj "/CN=Key Exchange Key/" \
    -outform DER -out KEK.cer
    Copy to Clipboard Toggle word wrap
  4. 生成自定义证书 custom_db.cer

    $ openssl req -quiet \
    -newkey rsa:3072 \
    -nodes -keyout custom_db.key \
    -new -x509 -sha256 \
    -days 3650 -subj "/CN=Signature Database key/" \
    --outform DER -out custom_db.cer
    Copy to Clipboard Toggle word wrap
  5. 为 64 位系统下载禁止签名(dbx)更新的 UEFI Revocation List 文件:

    $ wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.bin
    Copy to Clipboard Toggle word wrap
  6. 使用 virt-fw-vars 工具从密钥、数据库证书和 UEFI 变量存储生成 aws_blob.bin 二进制文件:

    $ virt-fw-vars --output-aws aws_blob.bin \
    --set-pk "$(< GUID.txt)" PK.cer \
    --add-kek "$(< GUID.txt)" KEK.cer \
    --add-db "$(< GUID.txt)" custom_db.cer \
    --add-db 77fa9abd-0359-4d32-bd60-28f4e78f784b MicCorUEFCA2011_2011-06-27.crt \
    --set-dbx x64_DBXUpdate.bin
    Copy to Clipboard Toggle word wrap

    自定义 blob 由以下几项组成:

    • PK.cer 带有自签名 X.509 证书
    • KEK.cercustom_db.cer 带有所有者组 GUID 和 Privacy Enhanced Mail (pem)格式
    • 从排除签名的数据库下载的 x64_DBXUpdate.bin 列表(dbx)。
    • 77fa9abd-0359-4d32-bd60-28f4e78f784b UUID 适用于 MicCorUEFCA2011_2011-06-27.crt Microsoft Corporation UEFI 认证机构 2011。
  7. 使用 awscli2 工具使用所需的安全引导变量从磁盘快照中创建并注册 AMI:

    $ aws ec2 register-image \
    --name rhel9-example-ami \
    --architecture x86_64 \
    --virtualization-type hvm \
    --root-device-name "/dev/sda1" \
    --block-device-mappings "{\"DeviceName\": \"/dev/sda1\",\"Ebs\": {\"SnapshotId\": \"snap-example-id\"}}" \
    --ena-support --boot-mode uefi \
    --region eu-central-1 \
    --uefi-data $(cat aws_blob.bin)
    Copy to Clipboard Toggle word wrap
  8. 从 AWS 控制台重启实例。

验证

  1. 验证是否启用了安全引导:

    $ mokutil --sb-state
    SecureBoot enabled
    Copy to Clipboard Toggle word wrap
  2. 使用 keyctl 工具验证自定义证书的内核密钥环:

    $ sudo keyctl list %:.platform
    
    4 keys in keyring:
    907254483: ---lswrv     0     0 asymmetric: Signature Database key: f064979641c24e1b935e402bdbc3d5c4672a1acc
    ...
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat