5.3. 使用自定义 RHEL 镜像使用安全引导配置 RHEL 实例


要确保 Google Cloud Platform (GCP)上的 Red Hat Enterprise Linux 实例有安全的操作系统引导过程,请使用安全引导。当注册自定义 RHEL GCP 镜像时,镜像由安全引导的预存储统一固件接口(UEFI)变量组成。这可让从 RHEL 镜像启动的所有实例都使用带有第一次引导时所需的变量的安全引导机制。您可以通过在 SecureBoot DB 中包括自定义证书来配置 RHEL 实例,以便您可以签署自定义工件,如第三方内核模块和统一内核镜像(UKI)附加组件。

先决条件

  1. 您已创建了并上传 RHEL GCP 镜像。详情请参阅 将镜像上传到 GCP
  2. 您已安装了以下软件包:

    • python3
    • efivar
    • keyutils
    • openssl
    • python3-virt-firmware
  3. 您已安装了 google-cloud-cli 工具。详情请参阅在 RHEL 上安装 gcloud CLI

流程

  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:4096 \
    -nodes -keyout PK.key \
    -new -x509 -sha256 \
    -days 3650 \
    -subj "/CN=Platform key/" \
    -outform DER \
    -out PK.cer
    Copy to Clipboard Toggle word wrap

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

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

    $ openssl req -quiet \
    -newkey rsa:4096 \
    -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:4096 \
    -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. 下载 Microsoft 证书:

    $ wget https://go.microsoft.com/fwlink/p/?linkid=321194 --user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" -O MicCorUEFCA2011_2011-06-27.crt
    Copy to Clipboard Toggle word wrap
  6. 下载更新的禁止签名(dbx) UEFI Revocation List File for 64 位系统:

    $ wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.bin
    Copy to Clipboard Toggle word wrap
  7. 使用 google-cloud-cli 实用程序使用所需的安全引导变量从磁盘快照中创建并注册镜像:

    $ gcloud compute images create <example-rhel-10-efi-image> \
    --source-image projects/<example_project_id>/global/images/<example_image_name> \
    --platform-key-file=PK.cer \
    --key-exchange-key-file=KEK.cer \
    --signature-database-file=custom_db.cer,MicCorUEFCA2011_2011-06-27.crt \
    --forbidden-database-file x64_DBXUpdate.bin \
    --guest-os-features="UEFI_COMPATIBLE"
    Copy to Clipboard Toggle word wrap
  8. 在 Google Cloud 控制台中,使用 Turn on Security Boot 功能启动 example-rhel-10-efi-image 镜像的实例。

验证

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

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

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat