以下是获取内核驱动签名证书的完整方案,分为 WHQL认证签名(商业发布) 和 测试签名(开发调试) 两类场景,结合微软最新政策及实操步骤说明:
🔐 一、商用WHQL认证签名(正式发布必备)
适用场景:需通过Windows Update分发、企业采购或规避系统警告的正式驱动
核心步骤:
购买EV代码签名证书
选择CA机构:必须从微软授信机构购买(如DigiCert、Sectigo、GlobalSign)
证书类型:仅限EV(Extended Validation)证书,普通OV证书无效
成本:约500-1000美元/年(含证书费+微软认证费)
交付形式:硬件令牌(USB Key),私钥不可导出
注册微软开发者账户
访问 Windows硬件开发中心,用EV证书签名注册文件完成企业验证
绑定Azure AD账户并提交营业执照等资质
驱动测试与HLK合规认证
使用 Windows HLK(Hardware Lab Kit) 测试驱动兼容性与稳定性
需在实体机(非虚拟机)运行测试,覆盖Win10/Win11多版本
生成测试报告(.hlkx文件)并签名
提交微软审核
通过Windows硬件仪表板提交签名的测试报告
微软进行二次签名(显示为“Microsoft Windows Hardware Compatibility Publisher”)
新增要求(2023年起):通过Driver Security Compliance Review安全审查
分发与部署
通过认证的驱动自动加入Windows Update目录,支持WSUS批量部署
设备安装时无安全警告,显示官方背书徽标
mermaid
Copy Code
graph LR
A[购买EV证书] –> B[注册微软开发者账号]
B –> C[HLK测试驱动]
C –> D[提交微软审核]
D –> E{审核通过?}
E –>|是| F[获得微软签名]
E –>|否| G[修改后重提交]
F –> H[Windows Update分发]
⚙️ 二、开发测试签名(临时调试)
适用场景:驱动开发阶段、内部测试环境
方案选择:
自签名证书(推荐)
生成工具:
OpenSSL:生成RSA密钥对及X.509证书
Windows SDK:makecert.exe 创建测试证书
签名命令:
bash
Copy Code
signtool sign /v /fd SHA256 /f MyCert.pfx /p <密码> driver.sys
需添加时间戳参数防过期
安装证书到测试机:
将自签名证书导入本地计算机的“受信任根证书颁发机构”
开启测试模式
管理员权限执行:
cmd
Copy Code
bcdedit /set testsigning on # 开启测试模式(桌面显示水印)
bcdedit /set nointegritychecks on # 禁用强制签名(高危!):ml-citation{ref=”1,12″ data=”citationList”}
重启生效,仅限x64系统Win10 1607之前版本
临时时间戳签名(高风险)
使用自建时间戳服务器伪造签名(如BiliBili视频教程)
警告:易被安全软件拦截,且违反微软策略
️ 三、关键注意事项
微软政策强制要求
Win10 1607+ x64系统仅加载WHQL签名或EV证书签名的驱动
SHA1算法已废弃,必须使用SHA256签名
时间戳的必要性
驱动签名需嵌入时间戳,否则证书过期后签名失效
公共时间戳服务机构
企业禁用测试签名
生产环境需通过组策略强制启用驱动签名验证(gpedit.msc > 设备安装限制)
Linux/跨平台签名
Linux内核驱动需使用X.509证书或GPG签名
Secure Boot启用时需导入自定义密钥到UEFI固件
💎 总结建议
商业发布:遵循WHQL流程,选择DigiCert/Sectigo的EV证书 + HLK测试
开发测试:用自签名证书+测试模式,禁止在生产环境禁用签名验证
时效性:预留2-4周完成WHQL认证,微软审核周期约7-10个工作日
注:自建时间戳或破解签名工具可能导致驱动被标记为恶意软件,务必通过正规渠道获取签名