Menu Close
4.5. 生成公钥和私钥对
您需要生成一个公共和私有 X.509 密钥对,才能成功在启用了安全引导的系统上使用内核模块。之后您将使用私钥为内核模块签名。您还必须将对应的公钥添加到用于安全引导的 Machine Owner Key (MOK) 中,以验证签名的模块。
这个密钥对生成的一些参数最好用配置文件指定。
步骤
使用密钥对生成参数创建配置文件:
# 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
如以下示例所示,创建 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 9 中,密钥对的有效性日期无关紧要。这个密钥不会过期,但建议在签名密钥的有效周期内对内核模块进行签名。但是,
sign-file
实用程序不会警告您,无论有效期日期如何密钥都将可用。另外,您还可以查看公钥的有效性日期,如下例所示:
# 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
- 在您要验证并载入内核模块的所有系统中注册您的公钥。
警告
应用强大的安全措施和访问策略来保护您的私钥内容。对于一个恶意的用户,可以使用这个密钥破坏所有由对应公钥验证的系统。
其他资源
-
openssl(1)
手册页 - RHEL 安全指南
- 通过在 MOK 列表中添加公钥在目标系统中注册公钥