注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成练习后,将这些值替换为特定于云环境的值。
使用 mokutil 更新 UEFI 安全引导的签名密钥
本教程说明如何使用计算机所有者密钥 (Machine Owner Key, MOK) 实用程序管理用于 Oracle Linux 上的 UEFI 安全引导的证书。
有关安全引导及其机制的详细背景信息,请参见Oracle Linux: Working With UEFI Secure Boot。
简介
计算机所有者密钥 (Machine Owner Key, MOK) 工具用于以下任务:
- 更新 UEFI 安全引导密钥数据库。
- 导入用于签署第三方或定制内核模块的密钥,以便在 UEFI 安全引导模式下加载这些密钥。
在 UEFI 安全引导密钥数据库中注册密钥的处理方式有两种:
-
为特定内核二进制文件注册散列。此方法将证书仅限于特定签名的内核二进制文件,因此是防止潜在开发的安全方法。但是,其缺点是,您需要对每个内核生成或更新执行此任务。
-
注册用于对内核和相关软件包进行签名的证书。因为证书适用于使用该证书的任何内核,所以此方法的重复性可能小于散列注册。它有助于执行诸如回滚到使用该证书的多个早期内核版本等任务。但是,它的缺点是它打开了系统可能运行易受攻击的软件包或内核二进制文件的风险。
目标
完成本教程后,您应该能够执行以下操作:
- 安装 MOK 和
pesign
实用程序。 - 使用散列或证书方法注册密钥。
警告:将 MOK 实用程序与 UEK R3 一起使用时存在问题。如果使用此内核,请不要继续本教程。
先决条件
- 运行至少 Oracle Linux 7 Update 3 的系统。
- 固件支持安全引导功能。
- 对系统的物理访问。
- 系统固件和配置支持该实用程序。如果您不确定固件,请不要继续本教程。
安装 mokutil
和 pesign
软件包
根据 Oracle Linux 系统发出以下命令之一:
-
在 Oracle Linux 8 系统上:
sudo dnf install mokutil pesign
-
在 Oracle Linux 7 系统上:
sudo yum install mokutil pesign yum-utils
使用 UEFI 安全引导密钥数据库注册散列
此注册方法包含两个任务:
- 提取特定签名内核二进制文件的填充散列。
- 将散列导入 MOK 列表,以允许内核在引导时装入。
这两个任务可以使用同时使用 mokutil
和 pesign
命令的单个命令完成。
-
以
/boot/vmlinuz-4.18.0-193.el8.x86_64
为例,键入以下命令:sudo mokutil --import-hash $(pesign -P -h -i /boot/vmlinuz-4.18.0-193.el8.x86_64 | cut -f 2 -d ' ')
-
输入并确认 MOK 注册请求的密码。
为此目的使用任意密码,但请注意您使用的密码。系统重新引导时会提示您输入该值。
-
重新引导系统以完成注册。
-
出现提示时,输入导入散列时设置的密码。
使用 UEFI 安全引导密钥数据库注册证书
-
下载内核源软件包。
源软件包包含用于对每个内核和 shim 进行签名的证书密钥。内核源软件包可以是 RHCK 内核的
kernel
,也可以是 Unbreakable Enterprise Kernel 的kernel-uek
。根据 Oracle Linux 系统发出以下命令之一:
-
在 Oracle Linux 8 系统上,此命令下载
kernel
或kernel-uek
的最新源软件包。sudo dnf download --source kernel|kernel-uek
-
在 Oracle Linux 7 系统上,
yumdownloader
命令可用于下载所需的特定内核源软件包版本,例如kernel-uek-4.14.35-1902.303.4.1.el7uek
或kernel-2.6.32-754.2.1.el6.x86_64
。类型:
sudo yumdownloader --source <kernel-version>|<kernel-uek-version>
-
-
提取源程序包以访问程序包的扩展验证 (Extended Validation, EV) 证书,例如:
sudo rpm2cpio ./kernel-uek*.rpm | cpio -idmv
-
输入并确认 MOK 注册请求的密码。
为此目的使用任意密码,但请注意您使用的密码。系统重新引导时会提示您输入该值。
注:请勿导入源软件包中包含的 CA 证书
securebootca.cer
。导入 CA 证书允许使用同一 CA 签名的证书的任何内核装入并导致 UEFI 安全引导无效。 -
重新引导系统以完成注册。
-
出现提示时,输入导入证书时设置的密码。
该证书将添加到 MOK 列表,并自动传播到此引导时的系统密钥环以及后续引导。
使用以下步骤可下载每个源软件包的多个版本,从每个源软件包提取证书,然后根据需要将其导入到 UEFI 安全引导数据库。要确定不同最低内核版本所需的软件包版本,请参阅Use the Oracle Linux UEFI Secure Boot Update Notices。
更多信息
- Oracle Linux:使用 UEFI 安全引导
- Oracle Linux 文档
- Oracle Linux 和 Unbreakable Enterprise Kernel (UEK) 发行版
- mokutil(1) 手册页
- pesign(1) 手册页
pesign --help
命令
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle 学习资源管理器。
有关产品文档,请访问 Oracle 帮助中心。
Use mokutil to Update Signature Keys for UEFI Secure Boot
F55290-01
March 2022
Copyright © 2020, Oracle and/or its affiliates.