Menu Close
Settings Close

Language and Page Formatting Options

Red Hat Training

A Red Hat training course is available for RHEL 8

3.5. 生成公钥和私钥对

您需要生成一个公共和私有 X.509 密钥对,才能成功在启用了安全引导的系统上使用内核模块。之后您将使用私钥为内核模块签名。您还必须将对应的公钥添加到用于安全引导的 Machine Owner Key (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 文件中。

    重要

    在 RHEL 8 中,密钥对的有效性日期无关紧要。这个密钥不会过期,但在密钥有效期间,建议在良好安全实践中对内核模块进行签名。但是,无论有效日期如何,对 sign-file 实用程序不会发出警告,密钥将可用。

  3. 另外,您还可以查看公钥的有效性日期,如下例所示:

    # openssl x509 -inform der -text -noout -in my_signing_key_pub.der
    
    Validity
                Not Before: Feb 14 16:34:37 2019 GMT
                Not After : Feb 11 16:34:37 2029 GMT
  4. 在您要验证并载入内核模块的所有系统中注册您的公钥。
警告

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