一、 嵌入式签名(推荐用于发布)
准备工作 - 获取用于签名的数字证书(如企业证书或微软认证证书)。
- 准备驱动程序包(.inf文件)和签名证书文件(.cer或.pfx)。
签名工具
使用`signtool`工具进行嵌入式签名:
```bash
signtool sign /f 证书路径 /p 密码 /p2 /thttp://timestamp.digicert.com /md sha1 /pa 32 /ce "驱动程序路径\驱动程序文件名.inf"
```
- 参数说明:
- `/f`:指定证书文件路径
- `/p`:证书密码
- `/p2`:驱动程序包密码(可选)
- `/thttp://timestamp.digicert.com`:使用微软时间戳服务
- `/md sha1`:指定签名算法
- `/pa 32`:针对32/64位系统分别签名
- `/ce`:包含版权信息
注意事项
- 嵌入式签名是发布驱动的必备步骤,未签名的驱动会导致系统蓝屏或功能异常。
- 启动驱动(如显卡驱动)必须嵌入签名,普通驱动可选择非签名选项但需用户确认。
二、 测试签名(开发调试使用)
创建测试证书
- 使用工具生成自签名证书(如`makecert`)或导入现有证书。
- 例如生成自签名证书:
```bash
makecert -config http://localhost:44300 -subject "CN=Test" -notBefore "2025-03-07" -notAfter "2025-12-31" -extensions v3_ca -out TestCert.pfx
```
- 配置系统信任该证书(需管理员权限)。
签名驱动包
使用`signtool`进行测试签名:
```bash
signtool sign /f TestCert.pfx /p 密码 /md sha1 /pa 32 /ce "驱动程序路径\驱动程序文件名.inf"
```
- 参数说明与嵌入式签名相同。
注意事项
- 测试签名仅用于开发调试,发布前需通过微软WHQL认证获取正式签名。
- 启动驱动必须使用有效证书,否则无法通过系统更新分发。
三、 系统级驱动签名(特殊场景)
内核模式驱动: 需通过微软硬件质量实验室(WHQL)认证,流程复杂且需专业资质。 绕过签名验证(不推荐)
总结
发布驱动:使用微软认证证书进行嵌入式签名。
开发调试:使用自签名证书进行测试签名。
安全风险:绕过签名验证可能导致系统崩溃或恶意软件注入,需谨慎处理。
建议优先通过微软官方渠道获取签名证书,并确保驱动程序通过WHQL认证以保障系统安全。