首页 > 技术文章 > 关于WDK开发内核签名之WHQL签名认证流程简介

dongzhaosheng 2019-04-21 20:49 原文

WHQL简介:

   WHQL全称Windows Hardware Quality Labs testing(Windows硬件质量实验室测试)它是对所涉及的第三方硬件软件进行一系列测试,然后提交测试的日志文件到微软供微软审核的一个测试流程。该流程也可能包含微软在各种设备上运行自己的测试,例如不同的硬件和不同的Microsoft Windows版本。我的个人理解WHQL其实就是微软为了统一平台的驱动完整性搞出来的东西,拿到ev签名意思证明你是微软合作的开发商,经过whql测试就证明你驱动在他的那些系统版本上可运行安装不会报错,因为我没调试文件微软应该只是测试我驱动能能安装,如果提交测试文件微软应该会根据你调试文件进行测试然后给你再各个平台上运行的反馈结果 。

WHQL数字签名申请步骤:

1、首先你应该到微软的仪表板页面申请一个Azure AD 账号地址为:https://partner.microsoft.com/zh-cn/dashboard/hardware/Search 

2、在开发人员设置-账户-管理证书 添加一个证书,这一 步需要你利用你从微软代理的EV证书合作商那里拿到证书后利用SHA2对从该页面下载的一个BIN文件进行签名,将该文件重新上传后微软将根据你签名的文件生成一个代码签名证书。微软目前授权的证书机构为Symantec,GlobalSign,DigCert,Entrust这些是微软正规授权的证书颁发商而沃通之类还有证书签名方案解决商的只是EV证书机构的代理商,他们拿到代理权然后推出一些证书签名工具还有方案作为二次销售。(补充说明bin文件一定要单签名SHA2不要双签也不要用SHA1签名否则提交后均不能通过审核)。

3、驱动提交文件格式目前为.hlkx, .hckx, .cab, wlk 因为我只是利用人家开源的驱动程序进行开发因此我不需要提交测试文件只要提交.INF 跟.SYS文件让微软帮我生成.CAT 带签名与.SYS带签名的文件即可。

4、cab文件应该将驱动文件放在一个目录下再生成cab文件如果直接将cat 与 sys文件生成cab微软的自动脚本解压后无法识别,这个点MSDN描述的非常不清楚算是一个比较坑的地方,我相信大部分人都没有布置HLK服务器的条件隐藏cab可能有挺多人用的(我说的大部分人是小公司客户端一般一人开发的那种情况)。

5、cab文件生成后应该利用签名工具对该cab文件进行SHA2签名

6、注意上传cab文件后 Leave all checkboxes blank for Attestation Signing 选项 如都不勾选则是正式颁发证书,如果勾选则是测试环境证书!切记!切记!

7、提交完成后微软会返回一个下载包里面包含.INF CAT SYS这三个文件后面两个带有微软的WHQL签名   Microsoft Windows Hardware Compatibility Publisher 该前面证明你已经在微软测试的相对应平台上没有任何问题。

结语:

whql刚接触之前觉得挺深奥的其实它就是一个微软给你盖的出厂检验合格证,但是产品质量有没有问题谁也不好说BUG这玩意众所周知是一个非常玄学的东西,谁也说不准它何时会发生所以就算你拿到了WHQL认证也顶多是你带了一个有效的数字签名然后可以报错蓝屏之类的溢出问题。以上就是对WHQL的简单描述与个人理解如果有不懂的可以留言。

推荐阅读