概述
Secure Boot 作为 UEFI 的一个选项,它可以被设置为开启或关闭。 Secure Boot 所需要的公钥证书被保存在计算机的主板的 FLASH 里面,FLASH 里面保存着 PK , KEK, db, dbx 的证书链。下面我们在虚拟机中使能Secure Boot功能,可以在虚拟机中实验,这样比较安全。
工具
以下工具是必不可少的:
openssl
efitools
sbsigntools
在有些系统上 efitools 和 sbsigntools 无法直接获取,请从源码包编译,其中efitools依赖 sbsigntools。
yum install -y perl-File-Slurp.noarch
git clone https://gitee.com/mirrors_kernel_googlesource/efitools.git
git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/sbsigntools.git/
在用源代码编译 efitools 时,需要 Perl 的一个模块,名字为 File Slurp,上面的命令安装该 module。
步骤
这里简要介绍 PK,KEK,db,dbx 和 MOK 的概念。
Platform Key (PK) - PK 是用于在硬件平台层和硬件平台拥有者建立起的信任关系 ,规定一个硬件平台只能被一个拥有者所拥有,即 PK 只能存在一个 ,与拥有者相关的公钥被存储在 FLASH 里面的 PK 变量里面,同时,拥有者的私钥可以来对 PK, KEK, db, dbx 进行签名和管理。
Key Exchange Key (KEK) - KEK 是用于在硬件平台和操作系统之间建立信任关系 ,KEK 的公钥可以在主板的 FLASH 存在多个不同项,即 KEK 可以存在多个 ,每一项对应一种可以被启动的操作系统,同样,KEK 的私钥可以来对 db, dbx 进行签名和管理。
Database (db) - db 是用于对 被许可的 EFI 文件予以加载的数据签名库 ,和 KEK 一样, db 的公钥可以存在很多项 。(在 UEFI 平台里面,操作系统加载文件就是一个 EFI 文件)
Database Excluded (dbx) - dbx 是一个 黑名单数据签名库 ,只要谁的 EFI 签名在这,谁就被屏蔽掉, dbx 的公钥也可以存在很多项 。后面不会使用这个。
下面主要是有两种方式将证书更新到 flash 中,一种通过 efivar 方式,另外一种是通过 BIOS 图形界面,前者需要创建EFI list 文件,之后可以通过命令行自动化操作;而后者需要的证书文件较少,但是需要通过图形界面进行操作。
自动化导入证书
建立 PK,KEK,db 密钥对,同时还需要创建EFI list。
建立密钥对
openssl req -new -x509 -newkey rsa:2048 -subj "/CN=Platform Key/" -keyout PK.key -out PK.crt -days 3650 -nodes -sha256
上面的 -subj 的参数可以自己设置,参数 -days 是密钥的有效期,这里设置为 10 年,也可以设置为其他,生成私钥 PK.key,公钥 PK.crt。
同理,KEK 和 db 亦是如此:
openssl req -new -x509 -newkey rsa:2048 -subj "/CN=Key Exchange Key/" -keyout KEK.key -out KEK.crt -days 3650 -nodes -sha256
openssl req -new -x509 -newkey rsa:2048 -subj "/CN=Database/" -keyout db.key -out db.crt -days 3650 -nodes -sha256
建立 EFI List 文件<

本文详细介绍了如何在虚拟机中启用和管理SecureBoot,包括创建和签名PK、KEK、db证书,使用efivarfs更新证书到主板Flash,以及通过图形界面导入证书。此外,还讲解了给EFI文件签名的步骤,确保系统安全启动。

1万+

被折叠的 条评论
为什么被折叠?



