Red Hat Training

A Red Hat training course is available for RHEL 8

3.6. 生成公钥和私钥对

您需要生成一个公共和私有 X.509 密钥对,以便在启用了安全引导的系统上使用自定义内核或自定义内核模块。之后您将使用私钥为内核或内核模块签名。您还必须将对应的公钥添加到用于安全引导的机器所有者密钥(MOK)中,以验证签名的内核或内核模块。

警告

应用强大的安全措施和访问策略来保护您的私钥内容。对于一个恶意的用户,可以使用这个密钥破坏所有由对应公钥验证的系统。

流程

  • 创建 X.509 公钥和私钥对:

    • 如果您只想为自定义 内核模块签名

      # efikeygen --dbdir /etc/pki/pesign \
                  --self-sign \
                  --module \
                  --common-name 'CN=Organization signing key' \
                  --nickname 'Custom Secure Boot key'
    • 否则:

      # efikeygen --dbdir /etc/pki/pesign \
                  --self-sign \
                  --kernel \
                  --common-name 'CN=Organization signing key' \
                  --nickname 'Custom Secure Boot key'
    • 当 RHEL 系统正在运行 FIPS 模式时:

      # efikeygen --dbdir /etc/pki/pesign \
                  --self-sign \
                  --kernel \
                  --common-name 'CN=Organization signing key' \
                  --nickname 'Custom Secure Boot key'
                  --token 'pkcs11:token=NSS%20FIPS%20140-2%20Certificate%20DB'

      默认情况下,如果没有指定 --token,则使用 pkcs11:token=NSS%20Certificate%20DB

公钥和私钥现在存储在 /etc/pki/pesign/ 目录中。

重要

在 RHEL 8 中,密钥对的有效性日期无关紧要。密钥不会过期,但对于良好的安全实践,建议在签名密钥的有效周期内签名内核和内核模块。但是,sign-file 工具不会发出警告,无论有效期如何,密钥都将可用。