什么是WHQL认证?WHQL认证和代码签名有什么区别?
WHQL是Windows hardware Quality Lab.的简称。WHQL是微软公司为了提升硬件、驱动程序与Windows系统兼容性而建立的实验室。产品通过WHQL认证意味着在Windows系统使用更安全,稳定,兼容性好。WHQL是Windows hardware Quality Lab.的简称。WHQL是微软公司为了提升硬件、驱动程序与Windows系统兼容性而建立的实验室。产品通过WHQL认证意味着在Windows系统使用更安全,稳定,兼容性好。
WHQL签名是指硬件的驱动程序通过了WHQL认证之后,微软会给驱动程加上一个“Microsoft Windows Hardware Compatibility Publisher”的数字签名。 有了这个WHQL签名,驱动程序在各版本的Windows系统安装会畅通无阻。在最新版本的Windows 10系统中,没有WHQL签名的驱动经常会出现安装不上的现象。
目前的桌面操作系统中,Windows系统市场占有率处于优势,Windows 的各个版本的系统加起来几乎占领了大部分市场。所以很多工业和行业的硬件设备都要考虑兼容在Windows系统上使用,这个使用过程中难免涉及设备的驱动使用(驱动是硬件设备和Windows系统联接传输数据的桥梁,没有驱动的硬件设备是无法正常工作的),但Windows系统对驱动的安装、启动、运行有一个较重要的要求,那就是相关的驱动文件需要加上数字签名。
如果该驱动程序文件在中联检CA做过 WHQL,则右键属性弹出的窗口中有一个选项卡“数字签名”,点击详细信息会看到具体的数字签名证书详情。
假设驱动安装时没有数字签名会怎样?我们看以下截图:
没有WHQL签名驱安装时提示“Windows 无法验证此驱动程序软件的发布者”或驱动没有效数字签名之类的警告:
而且,没有数字签名的驱动程序安装到 Windows中后,在设备管理器里,设备会显示感叹号,无法启动工作,如下图:
所以,如果一个硬件驱动没有微软发布的数字签名,则会在安装时会被Windows 拦截警告,提示没有数字签名或者驱动没有发布者,而且更可能的是导致设备驱动启动不了不工作。这一切源于微软对Windows系统保护,防止没有进行数字签名认证的驱动对Windows造成的破坏,因为驱动会涉及到系统内核中一些重要的指令,稍有不慎就造成Windows系统的死机和蓝屏。
可能有驱动开发者要问,我可以用代码签名证书为驱动进行数字签名,为什么要WHQL签名?
因为根据微软新政策,受微软信任的第三方内核模式代码签名交叉证书,将于2021年4月全部到期。此后,微软将成为Windows内核模式代码(驱动程序)签名的提供商。也就是说,以前第三方CA颁发的代码证书可以签名驱动使用,是因为签名时有微软给的交叉证书,现在微软给的交叉证书到期了,以后驱动签名规则其实是变了,驱动是在系统内核模式下工作的,所以绝大数驱动都是要经过WHQL测试认证,从而获得微软官方发布的数字签名才可以正常工作。
如下是微软给第三方CA颁发的可信交叉证书到期时间:
同时,经过WHQL测试认证签名后的硬件驱动安装时会实现驱动静默安装,不会弹出任何警告,可以给用户很好的使用体验,让驱动有很好的稳定性,不会像用代码签名证书签名后的驱动安装时会弹出如下弹窗(Trusted publishers警告):
WHQL认证与代码签名的关系:
所以,根据微软的最新要求,所有的驱动程序都需要通过WHQL认证才能正常安装。而进行驱动程序WHQL认证的第一步,就是必须使用EV代码签名证书建立微软硬件开发者中心仪表板账号。如果你希望驱动程序能够正常加载,获取一张EV代码签名证书必不可少!代码签名证书具备证明开发者身份真实性、保护代码完整性两大功能,主要用于对各种软件代码进行数字签名,用户下载软件时可通过数字签名验证开发者身份可信,且代码在传输过程中未被篡改,从而保护用户免受恶意病毒木马侵害,并保护软件开发者的利益。
因此,驱动程序开发商必备EV代码签名证书,才能顺利完成WHQL认证过程,步骤如下:
1)获取EV代码签名证书,向受信任的CA机构(如:沃通CA)申请
2)为你的公司注册硬件开发人员中心仪表板账号
3)下载并安装Windows 驱动程序工具包 (WDK)
4)创建CAB文件提交
5)使用EV代码签名证书对CAB文件提交数字签名(推荐:WoSignCode签名工具)
6)使用硬件开发人员中心仪表板提交EV代码签名证书签名后Cab文件
7)验证驱动程序是否已正确签名
8)在 Windows 10桌面版上测试驱动程序
我们的服务:
根据微软的相关要求,微软将不再支持第三方代码签名证书给驱动程序进行内核交叉签名,取而代之的便是要对驱动程序做 WHQL 认证,从而获得微软官方的数字签名。中联检检测会根据微软官方的要求,协助客户完成对驱动程序的测试认证,获得微软的数字签名,确保驱动程序在Windows上的顺畅运行。客户无需额外投入资源建立测试环境,无需额外投入人力、精力去梳理认证流程、了解测试细节。