启用安全启动后,需确保第三方驱动通过受信任证书签名或将其签名源加入UEFI信任链,可通过WHQL认证、自定义密钥导入db数据库、MOK机制或更新供应商驱动实现,管理员可于UEFI中配置自定义模式添加证书,并借助日志与工具排查签名验证失败问题。

在UEFI固件中启用安全启动后,系统会强制验证所有加载的驱动程序和操作系统组件的数字签名。这意味着未经认证或未使用受信任证书签名的第三方硬件驱动将无法加载,导致设备无法正常工作。解决这一问题需要确保驱动程序满足安全启动的信任链要求。
理解安全启动的信任机制
安全启动依赖于平台预置的公钥(如PK、KEK、db等)来验证引导过程中加载代码的签名。只有使用对应私钥签名且在数据库(db)中注册的证书签发的驱动才能通过验证。
- 厂商驱动必须使用被系统信任的证书链签名
- OEM或IT管理员可自定义签名数据库以添加受信证书
- 
微软要求x64版本Windows驱动通过WHQL认证并由Microsoft Third Party UEFI Certificate Authority签名
为第三方驱动添加可信签名
若使用非WHQL认证或自研驱动,可通过以下方式使其被安全启动接受:
                    
                
- 
使用平台允许的密钥签名:在开发或企业环境中,可生成自定义签名密钥,并将其公钥导入UEFI的签名数据库(db)
- 
通过MOK(Machine Owner Key)机制:在支持Shim的Linux发行版中,可注册MOK,在引导时由Shim验证额外签名
- 
联系硬件供应商获取已正确签名的驱动版本:特别是用于服务器或嵌入式设备的驱动
更新UEFI签名数据库
在受控环境中,管理员可以手动管理签名策略:
- 进入UEFI设置界面,找到“安全启动”相关选项
- 选择“自定义模式”或“高级模式”,导入第三方驱动的签名证书或哈希值到db条目
- 确保PK(Platform Key)已正确设置,否则无法修改其他数据库条目
- 保存更改并重启,确认驱动能正常加载
调试签名失败问题
当驱动仍无法加载时,可通过以下方法排查:
- 查看系统日志(如Windows事件查看器或Linux dmesg输出),定位具体签名错误
- 使用signtool verify(Windows)或pesign --verify(Linux)检查驱动签名状态
- 确认时间戳服务有效,过期证书可能导致验证失败
- 临时禁用安全启动测试驱动功能,确认问题是出在签名而非驱动本身
基本上就这些。关键在于让第三方驱动进入系统的信任链——要么由标准CA签名,要么把它的签名源加入UEFI信任列表。企业环境推荐建立内部签名流程并统一部署证书。
以上就是在UEFI固件中启用安全启动时如何解决第三方硬件驱动程序的签名验证?的详细内容,更多请关注php中文网其它相关文章!