能否自签名Windows内核驱动?Secure Boot启用且TESTSIGNING关闭场景下的疑问
Windows内核驱动自签名及替代方案解答
核心结论
在Secure Boot启用、TESTSIGNING关闭的场景下,无法使用自签名证书加载内核驱动。Windows的内核模式代码签名机制在Secure Boot开启时,仅信任微软根证书链下的签名(包括微软交叉签名的第三方证书),自签名证书不在默认信任链中,会被系统直接拦截。
可行替代方案
1. 微软硬件开发者预览计划免费签名
微软面向开发者提供免费的内核驱动签名服务,无需启用TESTSIGNING,且签名后的驱动在Secure Boot开启环境下可正常加载:
- 注册微软开发者账号并加入硬件开发者预览计划;
- 将驱动提交至微软签名服务,获取经过微软交叉签名的驱动文件;
- 该签名有效期通常为1年,适合内部团队分发使用,无年费成本。
2. 受控环境下关闭Secure Boot+信任自签名证书
如果同事的设备属于内部受控环境,可统一调整设备设置:
- 关闭设备BIOS中的Secure Boot选项;
- 将自签名证书导入设备的「本地计算机-受信任的根证书颁发机构」和「受信任的发布者」;
- 通过组策略(
计算机配置>管理模板>系统>驱动程序安装>代码签名>设备驱动程序的代码签名)将验证级别设置为「警告」或「忽略」; - 此方案无需付费,但需要统一修改设备BIOS,仅适合内部可控场景。
3. 轻量化驱动重构(功能适配)
如果驱动功能并非必须依赖内核级别权限,可尝试将逻辑迁移至用户模式:
- 通过Windows用户模式API(如Win32、UWP)实现等效功能,完全规避内核驱动的签名要求;
- 此方案仅适用于非底层硬件交互、非内核级权限需求的场景。
内容的提问来源于stack exchange,提问作者Erz
相关产品推荐
相关产品推荐

