如何手动在UEFI内导入安全启动证书

本文主要针对:

开启 Secure Boot 后出现SecureBoot Failure

且检查发现:

bootmgfw signature CA : Windows UEFI CA 2023

但 BIOS 中缺少:

  • Microsoft Corporation KEK 2K CA 2023
  • Windows UEFI CA 2023

的情况。

如果你的故障原因不同,请勿直接照搬。

警告:在进行任何操作之前,请务必备份电脑内的重要数据,并提前了解如何恢复BIOS出厂密钥、如何重置BIOS,乃至于如何重刷BIOS乃至售后换主板。

微软2011年的安全启动证书将在这个月内过期。虽然微软说不更新证书也不会影响正常开机,但是有许多例外情况:

  • 主板BIOS内的安全启动证书与系统Boot Manager的证书不匹配
  • 部分UEFI比较严格

这种情况下,开启安全启动会导致无法进系统,必须关闭安全启动才能进系统

Windows的安全启动更新流程无法在禁用安全启动时进行,而开启安全启动又无法进系统,因此只能尝试手动在BIOS里写入安全启动证书

一般情况下,需要更新厂商提供的BIOS更新,但是部分厂商没有提供BIOS更新,另外还会出现特殊情况,即系统Boot Manager还是旧版证书,BIOS更新成了新版并吊销旧版证书,一样会无法启动

进行下列操作之前,请务必关闭BitLocker(设备加密)功能,并等待磁盘完全解密完毕!

首先,关闭BIOS里的安全启动。部分电脑需要先给BIOS设置密码才能关闭安全启动,请务必牢记密码,如果忘记密码只能售后了

然后,下载最新更新版的Windows系统镜像,双击挂载,双击Setup.exe就地保留数据升级/重装

然后,以管理员权限运行PowerShell,依次输入这四个命令

[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match'Windows UEFI CA 2023'

[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match'Microsoft UEFI CA 2023'

[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match 'Option ROM UEFI CA 2023'

[System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI kek).bytes) -match 'KEK 2K CA 2023'

如果输出结果为True,则表明BIOS里面存在那个证书,False则表示不存在。

如果是False,且开启安全启动的情况下无法进系统,需要使用这个项目

将整个代码仓库ZIP下载下来并解压,或者git clone https://github.com/cjee21/Check-UEFISecureBootVariables.git下来

右键单击Check UEFI PK, KEK, DB and DBX.cmd以管理员身份运行。

在输出结果里,检查Current UEFI KEK和Current UEFI DB里,2023结尾的证书前面是不是对勾,如果不是对勾而是打叉,说明BIOS里没有新证书

右键单击Check Windows state.cmd以管理员身份运行。

如果输出里有

WindowsUEFICA2023Capable : Windows UEFI CA 2023 cert is not in DB

bootmgfw signature CA : Windows UEFI CA 2023

说明你的BIOS里没有2023证书,但Windows Boot Manager已经换成了2023证书

使用Apply 2023 KEK, DB and bootmgfw update.cmd,或者运行

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Secureboot /v AvailableUpdates /t REG_DWORD /d 0x5944 /f

Start-ScheduledTask -TaskName "\Microsoft\Windows\PI\Secure-Boot-Update"

无法在未开启安全启动的情况下安装证书,但是开启安全启动又无法进系统,因此必须手动更新证书。一般情况下,需要更新厂商提供的BIOS更新,但是部分厂商没有提供BIOS更新。

这时需要这样

警告:以下操作存在风险

右键单击Show UEFI PK, KEK, DB and DBX.cmd以管理员身份运行。

滚动到输出最上面,把Thumbprint复制下来备用

打开这个链接

secureboot_objects/PostSignedObjects/KEK/kek_update_map.json at main · microsoft/secureboot_objects

按Ctrl+F查找上面复制的Thumbprint

  • 如果能找到:根据品牌和文件名下载正确的.bin文件。
  • 如果找不到:请直接换电脑

在这个链接里

secureboot_objects/PostSignedObjects/KEK at main · microsoft/secureboot_objects

找到你的电脑品牌,然后寻找上一步Thumbprint所对应的KEKUpdate的bin文件,下载

获取SplitDbxContent.ps1脚本,用于在Windows上拆分.bin文件:

Install-Script -Name SplitDbxContent

在PowerShell中执行以下操作以拆分已签名包

SplitDbxContent.ps1 文件名.bin

建议把拆分出的两个文件放到新建的单独的KEK文件夹里

然后,以管理员身份运行PowerShell,执行以下命令

Set-SecureBootUefi -AppendWrite -Name KEK -ContentFilePath content.bin -SignedFilePath signature.p7 -Time 2010-03-06T19:17:21Z

请根据需要替换文件路径(不要修改文件名)。

如果成功,将返回一个显示名称、字节、属性的表。如果失败,会提示0xC0000022

右键单击Check UEFI PK, KEK, DB and DBX.cmd以管理员身份运行。

在输出里,如果Current UEFI KEKMicrosoft Corporation KEK CA 2023前面打勾,说明证书写入了

不要重启

在这个链接里

secureboot_objects/PostSignedObjects/Optional/DB at main · microsoft/secureboot_objects

按照你的处理器架构下载对应的DBUpdate2024.bin

在PowerShell中执行以下操作以拆分已签名包

SplitDbxContent.ps1 文件名.bin

建议把拆分出的两个文件放到新建的单独的DB文件夹里

然后,以管理员身份运行PowerShell,执行以下命令

Set-SecureBootUefi -AppendWrite -Name DB -ContentFilePath content.bin -SignedFilePath signature.p7 -Time 2010-03-06T19:17:21Z

请根据需要替换文件路径(不要修改文件名)。

右键单击Check UEFI PK, KEK, DB and DBX.cmd以管理员身份运行。

在输出里,如果Current UEFI DBWindows UEFI CA 2023前面打勾,说明证书写入了

重启进BIOS打开安全启动(不要恢复BIOS出厂密钥),保存,应该能进系统了

进系统后,以管理员身份运行PowerShell,执行以下命令

Start-ScheduledTask -TaskName "\Microsoft\Windows\PI\Secure-Boot-Update"

等待几分钟

以管理员身份运行PowerShell,执行以下命令

Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing

在输出里,检查UEFICA2023Status是不是Updated

打开设置→Windows更新检查更新,按照提示安装更新并重启

重启后,右键单击Check UEFI PK, KEK, DB and DBX.cmd以管理员身份运行

如果Microsoft Corporation KEK 2K CA 2023、Windows UEFI CA 2023、Microsoft UEFI CA 2023、Microsoft Option ROM UEFI CA 2023前面全是对勾,说明证书已写入

打开Windows安全中心→设备安全性,看看安全启动一栏是不是这样

安全启动
安全启动已启用,并且已应用所有必需的证书更新。无需进一步的证书更改。

如果是,说明完成了

1 个赞

太棒了,教程太详细了,如果真不行,关闭安全启动,能用就行

如果你的电脑开启安全启动可以正常进系统,那么可以参考这个帖子更新证书

其实说白了,小米只给这几款型号的主板提供了KEK

你的什么型号?

我的比较老了,应该是第一代的产品,属于直接换电脑的类型,不过也无所谓了,这个笔记本我平时放办公室查查资料,我关了安全启动能启动,现在的状态是能用就行,后面重装系统的时候我再试试

试试这个(有风险)