专栏名称: 看雪学苑
致力于移动与安全研究的开发者社区,看雪学院(kanxue.com)官方微信公众帐号。
目录
相关文章推荐
厦门网  ·  热搜第一!微信又上新功能 ·  2 天前  
厦门网  ·  热搜第一!微信又上新功能 ·  2 天前  
华龙网  ·  泰国宣布:明早,断电、断网、断油! ·  2 天前  
海峡都市报闽南新闻  ·  小米集团股价再创历史新高!总市值突破万亿港元 ·  3 天前  
海峡都市报闽南新闻  ·  小米集团股价再创历史新高!总市值突破万亿港元 ·  3 天前  
安天集团  ·  大年初六丨安天镇关给您拜年了 ·  4 天前  
51好读  ›  专栏  ›  看雪学苑

微软WHQL签名申请完整流程

看雪学苑  · 公众号  · 互联网安全  · 2024-08-16 17:59

正文




whql认证是什么


whql(Windows Hardware Quality Labs)认证是微软针对第三方的驱动程序进行的一系列测试,旨在确保驱动程序的兼容性。windows 10 1607以后版本的操作系统版本安装的驱动程序都需要先通过whql认证。否则会弹出红色警告框。




注册公司开发者账号


1.以下操作最好使用代理软件进行操作,否则打开网页会很慢。笔者这里已经提供注册好的账号,直接登录,无需再注册,可以跳过步骤二。

访问:
https://developer.microsoft.com/zh-cn/dashboard/Registration/Hardware?step=GetStarted



提示首先确保先拥有一个EV代码签名的证书。这个证书需要向微软授信的机构购买。

下一步,来到下面的页面:



点击”免费新建目录”:



注意这里的用户名、密码,是你后面将要登录用到的。

点击“”创建“”:



创建成功了。点击“下一页”:



输入刚才注册的用户名,点击“下一步”:



输入密码,点击“登录”:



填写好账户详细信息,“下一页”:



若已经有EV签名证书,点击“下一页”:



点击“立即下载可签名文件”,下载到 文件,使用EV证书对其进行签名:



笔者包中会提供EV签名所需的文件和说明,按照说明进行签名。签好后,上传签名后的文件:



由于笔者之前已经使用这个相同的EV签名工具签名了SignableFile.bin文件并上传了,所以提示“此证书已用于注册”。后面的注册过程就不在截图了。




登录公司开发者账号


1. 访问:
https://developer.microsoft.com/en-us/dashboard/hardware



使用刚才申请的账号登录,我这里使用之前申请的账号登录:



首次在电脑上登录,手机的Authenticator会收到请求登录信息。这个是注册的时候会提示下载的,用于登录验证的。批准后,会跳到下面的页面:



到此,注册、登录微软开发者账号完成。后面就需要使用WLK测试,并提交测试报告给微软了。




准备测试设备


至少需要两个系统(必须为英文操作系统),不能是任何的虚拟机,必须是物理机。

测试服务器 一个windows server版本的系统,推荐使用windows server 2012。

测试系统 需要windows 10 版本的操作系统,并且安装好要测试的驱动程序(1607以后的windows 10 可以打开测试模式安装驱动)。

若测试系统只有一台,可以安装windows10最新版的操作系统(笔者用的windows10 20H2)。笔者经验证只测试一个最高版本的windows系统,也能获得WHQL签名。

另外这两个系统需要加入在一个内网并且加入同一个工作组。如果不在同一网段的话,可能安装完HLK client后连接不上HLk server。加入了同一网段后,如果未把测试服务器和测试系统加入同一工作组,则会导致HLK测试的时候找不到测试的项。




安装测试服务器


Windows Hardware Lab Kit (Windows HLK) 是一套进行whql认证的测试框架。HLK套件仅用于windows 10,如果要测试windows 10 之前的操作系统,需要使用HCK套件(Hardware Certification Kit)。

HLK的下载地址为:
https://docs.microsoft.com/en-us/windows-hardware/test/hlk/



选择对应测试系统对应版本的HLK下载
安装完选择Controller + Studio 一路点击Next即可完成测试服务器的安装:






安装测试系统


测试系统的安装不需要额外的去下载安装包了,应该从安装完成的服务端获取。地址为:
\\HLKInstall\Client\Setup.cmd

例如我们的服务器地址是192.168.2.239:



双击setup.cmd,即可出现安装界面:



也是一路点击next即可完成安装。

安装完HLK client之后,去服务端打开HLK studio,便可以在默认连接池中找到我们刚刚成功安装的HLK client。



HLK的测试环境到此搭建完成。




开始测试


首先点击Configuration菜单栏,新建一个计算机池(HLK控制器会把测试的任务,分配到你选择的计算机池里边),然后将默认的计算机池中的计算机拖动至我们新建的计算机池中,然后右键计算机池中的计算机,可以改变其状态,当计算机的状态为Ready状态的时候,即表示当前的计算机可以开始测试任务了。有时候想重新测试时,状态改变不了Ready,需要卸载测试机的HLK client,重新安装。

配置好计算机池后,我们就可以新建测试项目了:



新建完成后选择项目,然后点击Selection,到这里可以选择测项,由于我们的驱动程序是一个WFP网络驱动,选择下图红圈中的Software device,选到对应的驱动程序,打上勾即可:



注意这里需要使用工具加载驱动,并把驱动对应的注册表键值的Start改为1,因为要随着系统启动自动加载驱动。有时HLK Studio的Selection的Software device的列表中没有要测试的驱动,这时候删除Configuration中的Ready状态的计算器,重启HLK Studio或测试机,就能找到驱动了。

下面切换到Tests选项,到
https://docs.microsoft.com/en-us/windows-hardware/test/hlk/
下载playlist。点击Load Playlist,加载对应测试机对应windows操作系统版本的xml文件。

笔者测试机操作系统是windows10 20H2,所以选择下面这个文件:



这个功能可以省去很多测试项目,比如下面没有应用Playlist时需要测试很多项目:



有些项目是无法测试通过的。

应用后,只需测试下面的项目:



需要注意的是,笔者在测试有些驱动的时候,先应用了Playlist,只剩下上面这个测试项目。测试开始跑后,EnableDriverVerifier、SetDriverVerifierOptions、QueryDriverVerifierSettings无法通过。解决办法是先不应用Playlist,待上图中的测试通过后再应用Playlist。

下图是测项旁边可能会出现的几种标志的意思,比如有个人形的logo代表测试的时候需要交互:



给全部的测项打上勾,点击Run Selected,此时测试就开始了。



测试的过程中测试系统会重启,等重启完成后,如果驱动程序需要手动启动的话,就先启动我们的驱动程序,驱动程序启动后就不需要再操作测试系统了,等待测试完成即可。

测试完成后去
https://docs.microsoft.com/en-us/windows-hardware/test/hlk/
下载Windows HLK filters:



按照里面的步骤去做。

注意:在HLK测试时,报错,错误日志如下:



解决办法参考:
https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/single-binary-opt-in-pool-nx-optin




这里加入POOL_NX_OPTIN。然后在DriverEntry开始的部分加入:
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);




测试结果打包


如果一切顺利的话,所有的测项都通过了,就可以对测试的结果打包,提交给微软审核了。打包需要的几个材料分别是:



蓝色的项目中不需要我们手动添加了,我们需要提供EV代码签过名的驱动程序以及对应的inf文件,还有对应的pdb符号文件。

选择Package页面,把驱动文件和inf文件保存在一个目录(没有INF文件的驱动可能需要手动生成,且inf中的字段要写正确,否则Create Package时会提示inf文件错误),右键选择Add Driver,选择这个目录。把pdb符号文件保存在一个目录,右键选择Add Symbols,选择这个目录。

点击Create Package:



这时候会弹出一个签名的提示,根据情况选择第3项,弹出下面的对话框:



选择笔者包中提供的.cer文件,再写入一个生成的报名,提示输入EV证书密码就行了。未签名的hlkx文件是无法提交给微软审核的。




提交给微软审核


访问 https://developer.microsoft.com/en-us/dashboard/hardware



点击Submit new hardware按钮:



把刚生成的.hlkx文件拖到红色框内:



出现上图的页面,填写Product name、勾选Requested Signatures栏的Windows Server 2008 X64、Windows Vista Client X64复选框、勾选What type of device的Internal复选框。注意这里一定不要勾选Perform test-signing for Win10 and above复选框,因为会生成WHQL测试签名,导致在win10 1607(新装非升级)以上版本安装驱动时提示此证书已被吊销。

操作完成后点击下面的”Submit”按钮你,就提交给微软了。之后就是等微软回复了。也是在这个页面等待。



一般会卡在Manual review一段时间,有时候微软那边在睡觉,等睡醒后会进行审核。审核时间为1个小时到1天。尽力在微软工作时间提交,反馈会比较快。

We detected some issues while validating your package and are manually reviewing the package for additional filters.

上面的句子会显示在下面,是正常的,所有审核的时候都有这个提示。

若反馈的进度条是下面这种情况:



即没有 Sign 环节的,且提交.hlkx时 Requested Signatures 下面的复选框没有出现的,如下图,没有这个复选框的:









请到「今天看啥」查看全文