对于Windows内核驱动签名,微软明确要求使用EV代码签名证书,对于Windows 10经由CA权威机构签发的EV代码签名证书给驱动签名后还必须递交到 Windows Hardware Developer Center Dashboard入口去获得微软的二次数字签名才能正式发布。

对于Windows内核驱动签名,微软明确要求使用EV代码签名证书,对于Windows 10经由CA权威机构签发的EV代码签名证书给驱动签名后还必须递交到 Windows Hardware Developer Center Dashboard入口去获得微软的二次数字签名才能正式发布。

历史背景

2015年10月31日起Windows 10中普通代码签名证书无法用于内核模式驱动签名,必须用EV 代码签名证书签名。

2016年8月1日起所有Windows 10 内核模式驱动经过CA权威机构签发的EV代码签名证书驱动签名后,都必须递交到Windows Hardware Developer Center Dashboard入口去再获得微软的二次数字签名,否则签名会被提示不合法。

在此基础上,给Windows 10的内核驱动进行签名必须要购买EV代码签名证书,签名时还需要添加微软的交叉签名,签名成功后再通过微软开发者中心递交签名文件,这样一个完整的过程才能让你的驱动在Windows10中正常使用。

如何对内核驱动签名

对内核驱动的签名需要使用微软官方的WDK的SignTool进行签名,关于准备工具及证书信息参考:

准备交叉签名

对于内核驱动签名均需要提供微软给CA权威机构准备的交叉签名,下载对应的交叉签名交叉签名证书下载,下载后与EV代码签名证书放置在同一目录

SignTool签名

打开WDK的命令行SignTool工具,以Comodo EV Code Signing证书的签名为便(下载AddTrust_External_CA_Root.cer交叉签名),输入以下命令

signtool sign /v /ac "D:\AddTrust_External_CA_Root.cer" /s MY /n "Your Company Name" /t http://timestamp.comodoca.com/authenticode "D:\driver.sys"
signtool sign /v /ac "D:\AddTrust_External_CA_Root.cer" /s MY /n "Your Company Name" /as /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 "D:\driver.sys" 

该命令是对驱动的双签名,双签名在过渡阶段能够兼容低版本操作系统,第一行是sha-1签名,第二行是sha-256签名,详细如下:

  • ac 配置交叉签名路径
  • /n 证书对应企业名称
  • /as /fd sha256 是针对驱动的sha-256签名
  • /t 针对过时的sha-1时间戳
  • /tr 是sha-256对应的时间戳

签名成功后需满足5级证书链接的基本条件,如下图

kernel code sign success b571a

测试签名

执行下方命令,看到和签名成功一样的结果即表示签名成功

signtool.exe verify /pa /v "D:\driver.sys"

*注意:对于上述签名成功的驱动文件,在当前Windows电脑上测试该签名文件,是无法正常测试的,请开发人员在开发环境测试成功之后,将此发行文件提交至Windows Hardware Developer Center Dashboard,经过微软二次签名后才能在正式版的Windows上运行

常见错误

1、用国内开发的一些签名工具不能给驱动文件签名吗?

由于EV代码签名证书的载体是加密后的U盘存储,并没有pfx证书文件格式,所以只能使用signtool进行签名

2、调用驱动文件时报577错误或31错误

自2016年8月1日起,签名后的驱动文件必须将此发行文件提交至Windows Hardware Developer Center Dashboard,经过微软二次签名后才能在正式版的Windows上运行,否则均提示证书签名无效

至此,Windows 内核驱动签名注意事项就介绍到这,关于更多详情参考参考微软官方说明:对内核驱动程序进行证明签名以便公开发布,或通过右下角联系客服进行详细了解。

 

相关文章