☰
Secure Boot密钥体系实战:PK/KEK/db/dbx配置与避坑指南
2026/10/20 21:49:50 网站建设 项目流程

做底层系统维护这么多年,Secure Boot 是我觉得最容易被低估、也最容易让人踩坑的环节之一。它解决的问题非常底层:操作系统内核还没跑起来之前,怎么证明真正正在加载的这个引导程序是可信的。一旦这个环节失守,后面的杀毒软件、EDR、应用白名单全都建立在不可信的地基上。这篇文章我会把 Secure Boot 的密钥体系拆开讲透,再带你把 PK、KEK、db、dbx 从头建立一遍,顺便分享一些实操中的避坑经验。如果你是运维、固件开发、或者对系统底层安全感兴趣的研究者,这篇内容可以直接参考复现。

1. Secure Boot 解决的信任问题与整体安全模型

1.1 启动链路为什么需要逐级验证

先说清楚一个最基础的问题:Secure Boot 到底在防什么。传统 BIOS 的启动过程里,固件几乎不做任何验证,直接跳转到 MBR 或者其他引导扇区执行代码。这意味着任何能写入硬盘的人,都可以替换引导程序,塞进一段恶意代码,而且这段代码会在操作系统内核加载之前就运行起来。等系统层面的安全软件启动时,恶意代码早就潜伏在内存里了。这相当于安检只检查了入口,但进入候机厅之后可以随便换人。

UEFI 的出现把启动过程规范化了,Secure Boot 就是这套规范里最核心的安全机制。它的校验是逐级传递的:UEFI 固件先验证引导程序的数字签名,引导程序再去验证内核的签名,内核再验证初始内存盘和驱动模块。整个链路形成了一个信任链,任何一环签名无效,系统就拒绝启动。我经常拿它类比机场的层层安检:登机牌身份核验、行李过检、随身物品复检,每一层都在确认"我是被信任的那个人"。

关键点是,Secure Boot 的校验发生在操作系统完全运行之前,它比任何应用层安全组件都更靠前。所以它的信任根必须放在固件里,而不是放在可能被篡改的磁盘上。这也是为什么 UEFI 规范设计了专门的密钥数据库来存放信任凭证。

1.2 四级密钥体系:PK、KEK、db、dbx 的分工

很多人在刚开始接触 Secure Boot 时,会被 PK、KEK、db、dbx 这一堆缩写搞晕。其实它们的分工非常清晰,核心就四个角色:

密钥组件全称作用由谁持有能否更新
PKPlatform Key平台信任根,控制所有密钥的最终变更权限平台所有者只能由旧 PK 签名更新
KEKKey Exchange Key密钥交换密钥,用于批准 db/dbx 的更新平台所有者、固件厂商、操作系统厂商由 PK 签名更新
dbSignature Database允许数据库,存放受信任的签名证书或文件哈希平台所有者由 KEK 签名更新
dbxForbidden Database禁止数据库,存放被撤销的签名证书或文件哈希平台所有者由 KEK 签名更新

为什么要搞这么多层,而不是一个密钥走天下?因为单一密钥的管理风险太大了。如果直接信任根既能签发引导程序又能管理密钥库,一旦它泄露,整个平台的安全边界就完全崩溃。分级之后,PK 平时基本不参与启动验证,只负责审批 KEK 的变更;KEK 平时也不参与启动验证,只负责审批 db/dbx 的变更;真正每天被固件拿来验证引导程序的是 db。

还有一个概念必须弄清楚:固件的工作模式。当 PK 尚未设置时,固件处于 SetupMode,此时任何人都可以往密钥库里写入内容;一旦 PK 被设置成功,固件进入 UserMode,之后所有密钥库变更都必须通过签名验证。另外有些主板提供了 AuditMode,在这种模式下固件会记录"本应被拒绝但放行了"的事件,适合迁移前做兼容性观察。理解这三种模式,后面实操时你就知道为什么有时写入密钥会失败。

2. Secure Boot 密钥管理实战准备

2.1 硬件与软件环境准备

实操之前,先确认你手里的环境能不能折腾。我强烈建议找一台专门的测试机来做密钥初始化,而不是直接在生产环境上操作。因为密钥一旦写错或者私钥丢失,最轻的是反复进不去系统,最重的是整个平台失去可控性,只能通过"Clear Secure Boot Keys"之类的方式重置信任根,代价很大。

环境上需要准备这些东西:

  • 一台支持 UEFI Secure Boot 的测试机,固件设置里有明确的 Secure Boot 开关选项
  • 一个 FAT32 格式的 U 盘,后面要放 KeyTool 和密钥文件
  • Linux 环境用于生成密钥和签名,装好openssl、efitools、sbsigntool这几个工具包
  • 记下当前系统的mokutil --sb-state输出,确认 Secure Boot 初始状态是关闭还是开启

如果你在虚拟化平台里做实验,先确认平台是否完整模拟了 NVRAM 和 UEFI 变量。据我所知,很多轻量级虚拟化产品对 Secure Boot 的支持非常不完整,会出现"选项能看见,但是写入没反应"的情况。遇到这种问题别死磕,换物理机测试。

2.2 生成 Platform Key(PK)的完整流程

PK 是整个信任链的根,所以第一步就是生成它。整个流程分四步:创建 GUID、生成密钥对与证书、转换为 EFI 签名列表、对签名列表签发形成可写入的认证文件。

第一步,生成一个唯一的 Owner GUID。这个 GUID 用来标识平台所有者,固件通过它来区分不同所有者的密钥。建议用uuidgen生成并保存:

uuidgen > myGUID.txt cat myGUID.txt

第二步,用 OpenSSL 生成 RSA 私钥和自签名证书。-days 3650是证书有效期,-nodes表示不加密私钥,方便固件工具读取,但这也意味着私钥文件本身必须被严格保护:

openssl req -new -x509 -newkey rsa:2048 -subj "/CN=Platform Key/" \ -keyout PK.key -out PK.crt -days 3650 -nodes

为什么选 RSA 2048?一方面 UEFI 规范对密钥长度的最低要求是 2048 位,另一方面是兼容性。我试过 4096 位密钥,部分旧一点的主板固件在验证时会直接报错,换成 2048 就一切正常。如果你确认固件足够新,可以用 3072 或 4096,但要意识到它在启动验证阶段会有额外的性能开销,虽然通常只有几百毫秒的差距。

第三步,把证书转换成 EFI Signature List 格式。UEFI 固件不认识裸证书,它认识的是EFI_SIGNATURE_LIST这种封装结构,里面包含了证书类型、Owner GUID 和证书数据:

cert-to-efi-sig-list -g "$(<myGUID.txt)" PK.crt PK.esl

第四步,生成 PK 的认证文件。这里有个容易搞混的细节:固件设置 PK 时,接收的不是直接签名后的证书文件,而是经过签名的EFI_SIGNATURE_LIST。所以我们要用刚生成的 PK 私钥对 PK.esl 再做一次签名,输出.auth文件:

sign-efi-sig-list -k PK.key -c PK.crt -g "$(<myGUID.txt)" PK PK.esl PK.auth

如果你想把平台重置为"无所有者"状态,可以生成一个空的签名列表并签发:

: > noPK.esl sign-efi-sig-list -k PK.crt -c PK.crt -g "$(<myGUID.txt)" PK noPK.esl noPK.auth

这一步在踩坑排查时非常有用,后面第 5 章会再提到。

2.3 生成 KEK 与 db 签名的细节

PK 就绪之后,接下来是 KEK 和 db。整个过程和 PK 高度相似,但千万注意两点:签名者不同、注册顺序不能乱。KEK 要用 PK 私钥签名才能写入,db 要用 KEK 私钥签名才能写入。

先生成 KEK 密钥对和证书:

openssl req -new -x509 -newkey rsa:2048 -subj "/CN=Key Exchange Key/" \ -keyout KEK.key -out KEK.crt -days 3650 -nodes cert-to-efi-sig-list -g "$(<myGUID.txt)" KEK.crt KEK.esl

这里要说一个非常关键的实操经验:很多主板出厂时已经预置了一组 KEK 和 db 数据,用来引导预装操作系统。如果你直接把生成的 KEK.esl 覆盖写入,等于把出厂预置的那条信任路径删掉了,结果是预装系统可能直接无法启动。正确的做法是先从固件中导出当前的 KEK 和 db,然后把你的新证书追加进去,再统一签发。

导出当前固件 KEK 列表在多数环境下可以通过 KeyTool 的导出功能完成,或者用efi-readvar这类命令直接读取:

efi-readvar -v KEK -o current_KEK.esl efi-readvar -v db -o current_db.esl

然后合并你的证书到现有列表:

cat current_KEK.esl PK_KEK_new.esl > combined_KEK.esl

接下来生成 db 密钥。db 里放的是真正被信任的引导程序的签名证书,生成方式一样:

openssl req -new -x509 -newkey rsa:2048 -subj "/CN=Signature Database Key/" \ -keyout db.key -out db.crt -days 3650 -nodes cert-to-efi-sig-list -g "$(<myGUID.txt)" db.crt db.esl

最后,分别签发 KEK 和 db 的认证文件。注意 db 的认证文件必须由 KEK 签名,不能直接用 PK 签名,这是规范规定的职责分离:

sign-efi-sig-list -k PK.key -c PK.crt -g "$(<myGUID.txt)" KEK combined_KEK.esl KEK.auth sign-efi-sig-list -k KEK.key -c KEK.crt -g "$(<myGUID.txt)" db combined_db.esl db.auth

我在这个环节踩过最大的坑是顺序颠倒。有一次我先把 db 写入了,结果固件完全不认,折腾了很久才发现规范里规定必须先有 PK,再有 KEK,最后才是 db。固件在 UserMode 下会校验现有密钥状态,顺序不对时直接拒绝接受新数据。

3. 安全策略配置与系统接入

3.1 写入密钥的两种方式:KeyTool 与 UEFI Shell

密钥文件都生成好了,接下来就是把它们写进固件。最稳妥、最通用的方式是使用 efitools 提供的 KeyTool。它是个 EFI 应用程序,直接用 U 盘启动,界面在固件阶段运行,不依赖操作系统。

操作步骤:

  1. 把KeyTool.efi、PK.auth、KEK.auth、db.auth四个文件复制到 FAT32 格式的 U 盘
  2. 开机进入固件设置菜单,把 U 盘设置为 UEFI 启动项,保存重启
  3. 进入 KeyTool 主界面后,选择Edit Keys
  4. 先在The PK一栏里选择Replace PK,导入PK.auth
  5. 再进入The KEK一栏,导入KEK.auth
  6. 再进入The db一栏,导入db.auth
  7. 全部更新完成后,退出 KeyTool,在固件设置里确认 Secure Boot 状态从 SetupMode 切换为 UserMode

另一种方式是 UEFI Shell。进入 UEFI Shell 后,输入命令挂载 U 盘文件系统:

map -r

然后直接加载 KeyTool:

fs0: KeyTool.efi

这两种方式本质上是同一个工具,区别只是启动入口。我平时更习惯用固件启动菜单直接加载 KeyTool,因为 U 盘在 UEFI Shell 下的盘符位置可能因为硬件拓扑变化而变化,找起来费时间。

写入密钥时有一个禁忌:绝对不要在这个过程中断电。固件写 NVRAM 变量时断电,轻则密钥写入不完整,重则固件变量区损坏。我在实验室里见过一台机器因为写入中途断电,Secure Boot 选项直接消失,后来只能靠短接清空 CMOS 重置固件配置。

3.2 签名引导程序与内核镜像

密钥库里有了 db,接下来要让现有的引导程序能够通过验证。如果系统是全新部署,可以直接安装支持 Secure Boot 的发行版引导流程。但如果是既有系统想启用 Secure Boot,就必须手动把引导程序和内核镜像全部签一遍。

签名引导程序用的是sbsign命令:

sbsign --key db.key --cert db.crt \ --output /boot/efi/EFI/BOOT/grubx64.efi.signed \ /boot/efi/EFI/BOOT/grubx64.efi

内核镜像也一样,先备份原始文件再签名:

sbsign --key db.key --cert db.crt \ --output /boot/vmlinuz-linux.signed \ /boot/vmlinuz-linux

签名完成后,用sbverify做一次验证:

sbverify --cert db.crt /boot/efi/EFI/BOOT/grubx64.efi.signed sbverify --cert db.crt /boot/vmlinuz-linux.signed

如果输出Signature Verifies,说明签名和证书是匹配的。但要注意一点:sbsign 验证的只是"签名与证书匹配",并不代表固件一定认这个证书。最终决定权在固件里的 db 列表。所以签名完不要急着重启,先用sbattach --list看一眼 EFI 文件的签名结构,再确认证书指纹和写入 db 的证书一致。

时间戳这个问题我得多说几句。UEFI 规范在验证签名时会把签名时间戳和 dbx 的撤销时间做比对。如果系统时钟严重偏早或偏晚,签名时间戳落在了 dbx 条目之后,即使证书本身在 db 里,固件也会拒绝加载。所以调试 Secure Boot 时,先检查系统时间是否准确。我有一次排查了很久"签名明明有效但就是起不来",最后发现是测试机 CMOS 电池耗尽,时间回到了十年前。

3.3 切换到 User Mode 的安全策略变更流程

PK 设置完成之后,固件从 SetupMode 切换到了 UserMode。在 UserMode 下,所有密钥变更都遵循严格的签名链规则:

  • 更新 db 或 dbx:必须由 KEK 签名
  • 更新 KEK:必须由 PK 签名
  • 更新 PK:必须由旧 PK 签名

这套规则意味着,如果你之后想新增一个允许引导的证书,不能像 SetupMode 那样直接替换,而要做一轮完整的签名操作。假设你现在想新增一个newdb.crt到 db:

cert-to-efi-sig-list -g "$(<myGUID.txt)" newdb.crt newdb.esl sign-efi-sig-list -k KEK.key -c KEK.crt -g "$(<myGUID.txt)" db newdb.esl newdb.auth

然后用 KeyTool 选择The db里的Append,导入newdb.auth。注意区分Append和Replace:Append 是在现有 db 基础上新增条目,Replace 是把整个 db 替换成你要导入的内容。初次配置时用 Replace,后续维护时用 Append 更安全。

更新 KEK 时同理,但签名者变成了 PK:

sign-efi-sig-list -k PK.key -c PK.crt -g "$(<myGUID.txt)" KEK newkek.esl newkek.auth

这里我想强调备份的重要性。在 UserMode 下任意一次密钥更新之前,都要先导出当前固件里的 KEK 和 db 列表。万一更新后系统无法引导,你还能用 KeyTool 把旧的列表导回去。我个人的习惯是把固件当前的 KEK/db/dbx 导出后连同签名的 auth 文件一起存进离线归档,文件名带上日期,方便后续排查。

4. 高级安全策略与维护

4.1 使用 dbx 撤销不安全的签名

dbx 是密钥体系里最容易被人忽视、但在实际威胁场景中最有用的组件。它的作用是把某个签名从"信任列表"里拉黑。比如某个引导程序被发现有漏洞,或者某把私钥泄露了,传统的做法是要求用户手动更新固件,但这不现实。有了 dbx,你就可以在操作系统层面或者固件层面把问题签名加入禁止数据库,固件在后续启动时直接拒绝加载。

生成 dbx 更新文件的操作和 db 类似:

cert-to-efi-sig-list -g "$(<myGUID.txt)" revoked.crt revoked.esl sign-efi-sig-list -k KEK.key -c KEK.crt -g "$(<myGUID.txt)" dbx revoked.esl dbx.auth

然后用 KeyTool 在The dbx下执行Append导入。

关于 dbx 有一个优先级概念一定要理解清楚:dbx 的优先级高于 db。即使某个文件同时存在于 db 里,只要它在 dbx 中存在(或者它的签名证书在 dbx 中),固件就会拒绝加载。这意味着 dbx 是一把双刃剑,误操作可能导致原本正常的系统无法启动。所以我在更新 dbx 之前一定会做两件事:一是确认当前系统的引导签名可以由另一把可信密钥签发,二是把当前 dbx 完整导出备份。

实际操作中,dbx 更新还有一种常见形态:从上游固件提供商或系统供应商拿到的官方 DBX 更新包。这类更新包本身就是带签名的 auth 文件,直接通过 KeyTool 导入即可。导入前注意核对签名来源,不要随便下载来路不明的 dbx.auth。

4.2 发行版与 Machine Owner Key 机制

现实中主流 Linux 发行版普遍没有要求用户把自定义证书写进固件 db,而是采用了一种更灵活的方案:shim 加 MOK。理解这个机制对日常管理 Secure Boot 很有帮助。

shim 是一个极小的第一级引导程序,它自身由固件 db 里的预置证书签名,因此能通过 Secure Boot 验证。shim 内部内置了一个 Machine Owner Key(MOK)列表,当它被加载后,会去验证下一个引导程序(比如 GRUB)的签名,这个签名既可以来自固件 db,也可以来自 MOK 列表。关键点是,MOK 列表是保存在 NVRAM 里的,用户可以通过mokutil命令自行管理。

这样一来,用户自定义的密钥就不需要写进固件 db 了,只需导入 MOK 即可。这个过程比直接操作固件密钥库灵活得多,也安全得多,因为 MOK 的变更会经过一次重启确认流程,防止恶意程序偷偷向 MOK 列表导入自己的证书。

导入 MOK 的方法:

mokutil --import MOK.cer

重启后系统会自动进入 MOK 管理界面,要求你确认是否信任这把新证书。确认完成后,用这把证书签名的任何引导程序或者内核模块才能被正常加载。查看当前已导入的 MOK:

mokutil --list-enrolled

我在实际部署中强烈建议采用这样的策略:能用 MOK 就不要直接改固件 db。固件 db 是全局信任根,改一次要承担的验证责任很大;MOK 只影响当前系统,回滚也很简单。只有当你在做需要严格控制整个平台信任链的项目时,才需要把自己的 db.key 直接写进固件。

还有一个联动机制值得知道:当 Secure Boot 启用时,Linux 内核会自动进入 lockdown 模式,在这个模式下,未签名的内核模块、未受保护的内核内存操作都会被禁止。即使你通过 MOK 签了内核模块,也必须重新签名并重新启动才能加载。这是 Secure Boot 与内核安全策略的衔接点,经常被忽略。

4.3 密钥轮换与吊销生命周期

密钥不是一劳永逸的。证书会过期,私钥可能泄露,人员会变动,所以必须考虑轮换和吊销的生命周期管理。

Secure Boot 的证书过期本身不会直接导致固件拒绝引导——UEFI 规范并不强制校验证书有效期,但很多操作系统和 shim 会做额外的时间检查。更重要的是,签名时间戳决定了 dbx 是否生效。如果签名时间戳早于某个 dbx 条目的创建时间,该签名仍被信任;如果签名时间戳晚于该 dbx 条目,则被判定为已撤销。所以时间校准不只是启动兼容性问题,它直接影响安全判断。

轮换密钥时,顺序同样重要。假设你的 KEK 私钥泄露了,流程如下:

  1. 生成新的 KEK 密钥对和证书
  2. 用旧 KEK 对新的 KEK.esl 签名,生成新的 KEK.auth
  3. 在固件中更新 KEK 列表,将新证书追加进 KEK
  4. 等系统重新引导确认没有问题后,再用新 KEK 签名一个 dbx,把旧 KEK 的证书加入禁止列表
  5. 后续所有 db/dbx 更新都切换到新 KEK 签名

为什么步骤 4 要放在最后?因为如果在旧 KEK 还在正常使用时就把它拉黑,任何由旧 KEK 签名的 pending 更新都会失效,可能导致系统在重启时无法完成密钥更换。这种"先加后撤"的顺序,是密钥轮换里最基本的稳妥策略。

对于 PK 的轮换,规则更严格:只能由当前 PK 签名新 PK,或者先把 PK 删除让平台回到 SetupMode 再重新设置。如果你连旧 PK 私钥都没有了,那就只能走固件重置流程(清空 Secure Boot 密钥),然后从零开始重建信任链——这意味着所有设备的缓存密钥、平台固件设置、恢复密钥都可能需要重新配置。因此我反复和团队强调:私钥要离线存储,至少保存两份在不同物理位置。

5. 常见问题与排查技巧实录

5.1 Secure Boot 开启后无法引导系统

这是最常见的故障,现象是开机直接进入固件设置,或者提示Security Violation。按我的排查经验,90% 的原因是引导程序或内核镜像没有正确签名。

排查路径很固定:

# 查看当前 Secure Boot 状态 mokutil --sb-state # 检查引导程序的签名信息 sbattach --list /boot/efi/EFI/BOOT/grubx64.efi.signed # 验证签名使用的证书 sbverify --cert db.crt /boot/efi/EFI/BOOT/grubx64.efi.signed # 查看内核启动时与 Secure Boot 相关的日志 dmesg | grep -i secure

如果 sbverify 报Verification Failed,多半是证书不对。看一下你的引导程序到底是用哪个证书签的,然后确认那把证书在不在固件 db 里。还有一种隐蔽情况:引导分区里的文件被更新工具覆盖了,重启时又把未签名的原版文件恢复了。所以排查时别只看当前文件,要把/boot/efi下所有跟引导相关的文件都列出来看一看。

如果你开了 Secure Boot 又用了自定义 initramfs,也要确认 initramfs 是经过签名的。很多引导链里,GRUB 加载的 initramfs 是在 GRUB 层面做校验,如果 GRUB 本身支持cryptomod之类的验证,那么未签名的 initramfs 会被拒绝。检查 initramfs 是否参与签名链,最直接的办法是在 GRUB 配置里临时禁用 initramfs 的验证,确认能不能启动,能启动就说明问题出在 initramfs 签名上。

5.2 密钥写入失败与 SetupMode 异常

写入密钥时经常遇到的第一个问题是 KeyTool 找不到 U 盘。检查点:U 盘必须是 FAT32;必须以 UEFI 模式启动而不是 Legacy BIOS 模式;U 盘里必须同时存在\EFI\BOOT\BOOTX64.EFI这样的标准路径,有的固件只会从标准路径寻找启动项。

第二个问题是 PK 写入成功但固件仍停留在 SetupMode。我遇到过的原因有两种:一是 Owner GUID 不匹配,生成证书时写入的 GUID 和签名列表里的 GUID 不一致;二是签名列表格式有问题,最常见的是用错了cert-to-efi-sig-list的参数。排查方法是重新执行一遍uuidgen到cert-to-efi-sig-list到sign-efi-sig-list的完整流程,每一步都检查输出文件的内容。

第三个问题是固件根本不支持写入 Secure Boot 密钥。这种问题常出现在虚拟机或某些低端主板上。虚拟机的话可以去平台设置里确认 Secure Boot 相关选项是否开启,物理机的话检查固件设置里 Secure Boot 模式是不是被固定在 Standard 而不是 Custom。有些主板在 Custom 模式下不能直接写入密钥,需要切到 Standard 模式。

我自己的经验是,先在 SetupMode 下把密钥全部写好,确认固件已经切到 UserMode 之后,再开始签名引导文件。如果你在 UserMode 下才想起某个密钥没写,又要重新进 SetupMode,那就要先把当前所有密钥导出,避免把之前配好的信任链弄丢。

5.3 签名验证失败快速定位

签名验证失败并不总是一目了然的,我整理了一个排查速查表。

现象可能原因处理方式
开机提示 Security Violation引导程序未签名或签名损坏重新 sbsign 签名,确认证书在 db 中
引导程序能启动但内核被拒内核镜像未签名或证书不对用 db.key 重新签名 vmlinuz
模块加载失败lockdown 模式限制未签名模块将模块签名或导入 MOK 并重启
KeyTool 找不到设备U 盘格式不对或启动模式不对改用 FAT32,确认 UEFI 引导模式
固件认不出 auth 文件GUID 不匹配或签名者不对核对 Owner GUID,确认签名链关系
时间戳导致签名失效系统时间偏移或 CMOS 失效校准时间后重新签名引导程序
更新 db 后无法启动db 中遗漏了必要的预置证书将原固件 db 合并后重新 append
MOK 导入后仍被拒未重启确认 MOK重启进入 MOK 管理界面确认启用

还有一个小技巧:如果你的固件支持 Audit Mode,先在 AuditMode 下观察系统启动时固件到底拒绝了哪些东西。Audit Mode 不会真的拦截文件,只会记录日志,这样能让你在不破坏系统可用性的前提下,准确知道哪些文件需要签名、哪些证书需要加入 db。确认无误后,再切回 UserMode 完成真实校验。

我个人在实际操作中的体会是,Secure Boot 配置最忌讳"凭感觉"。所有密钥操作都要有记录:哪天生成的密钥、哪把证书写进了哪台机器的 db、私钥备份存在哪里。否则半年后设备出现问题,你连这台机器用的是哪把 db.key 签的引导程序都说不清楚,排查效率会非常低。最后再分享一个我长期使用的技巧:把生成的 GUID、证书指纹、当前时间一起写入一个元数据文件,和私钥离线归档放在一起。这个文件不包含任何私钥内容,但能在你需要验证"这台设备是不是由我们管理"的时候,快速给出审计依据。Secure Boot 不是安全终点,它是整个信任链的起点——把起点管好了,后面系统层面的安全策略才有讨论的价值。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询