4.11. 为 secureboot 添加密钥
要使用 KMM 内核模块管理 (KMM) 为内核模块签名,需要一个证书和私钥。有关如何创建这些密钥对的详情,请参阅生成公钥和私钥对。
有关如何提取公钥和私钥对的详情,请参阅使用私钥签名内核模块。使用第 1 到 4 步将密钥提取到文件中。
流程
创建包含证书以及包含私钥的
sb_cert.priv
文件的sb_cert.cer
文件:$ 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
使用以下方法之一添加文件:
将文件直接添加为 secret :
$ oc create secret generic my-signing-key --from-file=key=<my_signing_key.priv>
$ oc create secret generic my-signing-key-pub --from-file=cert=<my_signing_key_pub.der>
根据 base64 编码添加文件:
$ cat sb_cert.priv | base64 -w 0 > my_signing_key2.base64
$ cat sb_cert.cer | base64 -w 0 > my_signing_key_pub.base64
在 YAML 文件中添加编码的文本:
apiVersion: v1 kind: Secret metadata: name: my-signing-key-pub namespace: default 1 type: Opaque data: cert: <base64_encoded_secureboot_public_key> --- apiVersion: v1 kind: Secret metadata: name: my-signing-key namespace: default 2 type: Opaque data: key: <base64_encoded_secureboot_private_key>
应用 YAML 文件:
$ oc apply -f <yaml_filename>
4.11.1. 检查密钥
添加密钥后,您必须检查它们以确保正确设置它们。
流程
检查以确保正确设置公钥 secret:
$ oc get secret -o yaml <certificate secret name> | awk '/cert/{print $2; exit}' | base64 -d | openssl x509 -inform der -text
这应该会显示带有 Serial Number, Issuer, Subject 等的证书。
检查以确保正确设置私钥 secret:
$ oc get secret -o yaml <private key secret name> | awk '/key/{print $2; exit}' | base64 -d
这应该显示包括在
-----BEGIN PRIVATE KEY-----
和-----END PRIVATE KEY-----
行中的密钥。