本文介绍如何进行WHLK/WHQL/WHCK测试,以获取微软的数字签名。 WHLK/WHQL/WHCK是同一个东东,历史上有过不同称呼而已。
Windows下的驱动程序,是必须通过微软的WHLK测试,经过微软的数字签名之后,才能在最终用户那边顺利安装的。WHLK测试工具是微软开发的一套测试工具,它自动识别驱动的设备类型,然后采用相对应的一系列test cases进行测试,整个测试周期根据设备类型不同而不同,例如声卡,不卡壳的话大约4天时间可跑完一个OS的测试。
注意,32位和64位需要分别测试的。Win7和win10的测试工具版本是不同的,对server版本要求也不同的,我们以win10为例介绍一下这个声卡whlk测试平台的搭建。
1. 购买商业数字证书
在进行WHLK测试之前,需要对我们的驱动进行数字签名,而数字签名的证书,我们需要向微软承认的第三方购买,例如GlobalSign, Symentec等。这些证书颁发机构会要求我们提供公司的一些信息,必须真实,工商部门登记的,他们是会去核实的。然后缴一笔不菲的费用,有效期一年。
购买到数字证书之后,安装,并导出证书(我们命名为buckhorn.cer)到数字签名工具同目录下,最后把要签名的驱动.inf和.sys文件也拷到数字签名工具同目录下,就可以用来数字签名了:
- inf2Cat.exe /driver:.\ /OS:10_x64
- signtool.exe sign /f buckhorn.cer /p xxxx /fd sha1 /tr "http://sha1timestamp.ws.symantec.com/sha1/timestamp" /v "bhuaud.sys“
- signtool.exe sign /f buckhorn.cer /p xxxx /fd sha1 /tr "http://sha1timestamp.ws.symantec.com/sha1/timestamp" /v "bhuaud.cat"
2. 搭建WHLK平台
这个WHLK搭建平台的文档,可以从msdn.microsoft.com上下载的。
2.1 安装windows server 2016;
2.2 从microsoft.com下载最新的Redstone的KitPreinstall.zip,里面有个readme.txt,在windows server 2016上安照指示安装那些证书和注册表;
2.3 从microsoft.com下载最新的HLK,在windows server 2016上安装HLK,controller和Studio都一起安装。这个HLK会把客户端需要安装的部分在一个文件夹中共享出来;
2.4 按如何架构搭建WHLK测试平台,HLK Controller和Studio我们合二为一安装在这台Server2016上了:
2.5 从客户端打开共享文件夹,安装\\Server2016 ip address\HLKInstall\Client\Setupamd64.exe或exe,根据你客户端OS的类型选择对应的安装包。
2.6 回到Server2016,运行HLK Studio,右击”Root” ,Create Machine Pool
2.7 从Default Pool中可以发现你刚才安装的客户端机器,把它们移到你刚刚创建的新的machine里头去,并右击那个待测试的客户端的状态,选“Ready”:
2.8 点上图左上角的回退,然后Create Project:
2.9 点击Selection,选择刚才的machine pool,并选中待测的设备Buckhorn:
2.10 再点击Tests,勾选中所有测试项,即可进行测试了。WHLK测试工具本身也有bug的,所以跑完测试后,可以运行一下filter,这样由于WHLK工具自身的问题导致的测试失败就会被过滤掉。
安装filters : https://docs.microsoft.com/en-us/windows-hardware/test/hlk/user/windows-hardware-lab-kit-filters
2.11 所有测试项通过后,点package,Add Driver Folder,把我们x86/x64的已签名的驱动加进来:
2.12 Create Package,使用我们购买的数字证书签名,保存为hckx。
3. 向微软提交数字签名申请
3.1 先得向microsoft注册一个账户: https://partner.microsoft.com/en-us/dashboard/hardware/dirver
这个注册的过程中需要用到上面购买的数字证书,以验证身份。
3.2 然后提交buckhorn.hckx,每提交一次,缴一笔不菲的费用。然后微软会给我们的驱动用微软的数字证书签名。
3.3 这时,我们用微软签名过的驱动制作正式的安装包了。