Menu Close
4.8. 使用私钥签名内核模块
如果启用了 UEFI 安全引导机制,用户可以通过加载签名的内核模块来获取对其系统的增强安全优势。下面的部分描述了如何使用私钥为内核模块签名。
先决条件
- 您生成了公钥和私钥对,并且知道公钥的有效性日期。详情请参阅生成公钥和私钥对。
- 在目标系统中注册了您的公钥。详情请查看在 MOK 列表中添加公钥在目标系统中注册公钥。
- 您有一个可以签注的 ELF 镜像格式的内核模块。
步骤
使用参数执行
sign-file
工具,如下例所示:# /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 my_signing_key.priv my_signing_key_pub.der my_module.ko
sign-file
计算并直接将签名附加到内核模块文件中的 ELF 镜像中。modinfo
实用程序可用于显示有关内核模块签名的信息(如果存在)。注意附加的签名不包含在 ELF 镜像部分,不是 ELF 镜像的一个正式部分。因此,
readelf
等实用程序将无法在内核模块中显示签名。您的内核模块现在可以被加载。请注意,您签名的内核模块也可以在禁用 UEFI 安全引导的系统或非 UEFI 系统中加载。这意味着您不需要同时提供内核模块的签名和未签名版本。
重要在 RHEL 9 中,密钥对的有效性日期很重要。这个密钥没有过期,但必须在其签名密钥的有效周期内对内核模块进行签名。
sign-file
实用程序不会提醒您这样做。例如,一个只在 2021 年有效的密钥可用于验证在 2021 年使用该密钥签名的内核模块。但是,用户无法使用该密钥在 2022 年签发内核模块。
其他资源