Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

1.9.3. 生成公共和专用 X.509 密钥对

您需要生成一个公共和私有 X.509 密钥对,才能成功在启用了安全引导的系统上使用内核模块。之后您将使用私钥为内核模块签名。您还必须将对应的公钥添加到用于安全引导的 Machine Owner Key(MOK)中,以验证签名的模块。具体步骤请查看 第 1.9.4.2 节 “系统管理员手动将公钥添加到 MOK 列表中”

这个密钥对生成的一些参数最好用配置文件指定。

  1. 使用密钥对生成参数创建配置文件:

    # cat << EOF > configuration_file.config
    [ req ]
    default_bits = 4096
    distinguished_name = req_distinguished_name
    prompt = no
    string_mask = utf8only
    x509_extensions = myexts
    
    [ req_distinguished_name ]
    O = Organization
    CN = Organization signing key
    emailAddress = E-mail address
    
    [ myexts ]
    basicConstraints=critical,CA:FALSE
    keyUsage=digitalSignature
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid
    EOF
  2. 如以下示例所示,创建 X.509 公钥和私钥对:

    # openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 \
    -batch -config configuration_file.config -outform DER \
    -out my_signing_key_pub.der \
    -keyout my_signing_key.priv

    公钥将写入 my_signing_key_pub.der 文件,私钥将写入 my_signing_key.priv 文件中。

  3. 在您要验证并载入内核模块的所有系统中注册您的公钥。

    详情请查看 第 1.9.4 节 “在目标系统中注册公钥”

警告

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