SSL证书、代码签名证书、文档签名、WHQL 认证服务提供商

驱动要实现静默安装,需要进行 WHQL数字签名

2021-05-25, 发表于【行业常识】

硬件驱动要有WHQL数字签名才能实现正常安装、启动、运行,并实现驱动静默安装。

目前的桌面操作系统中,Windows系统市场占有率处于优势,Windows 的各个版本的系统加起来几乎占领了大部分市场。所以很多工业和行业的硬件设备都要考虑兼容在Windows系统上使用,这个使用过程中难免涉及设备的驱动使用(驱动是硬件设备和Windows系统联接传输数据的桥梁,没有驱动的硬件设备是无法正常工作的),但Windows系统对驱动的安装、启动、运行有一个较重要的要求,那就是相关的驱动文件需要加上数字签名。

驱动是否具有WHQL数字签名的对比(下图):

有数字签名的驱动程序

如果该驱动程序文件在环度网信做过 WHQL,则右键属性弹出的窗口中有一个选项卡“数字签名”,点击详细信息会看到具体的数字签名证书详情,如下:

WHQL数字签名证书 

假设驱动安装时没有数字签名会怎样?我们看以下截图:

没有WHQL签名驱安装时提示“Windows 无法验证此驱动程序软件的发布者”或驱动没有效数字签名之类的警告:

Windows 无法验证此驱动程序软件的发布者 

而且,没有数字签名的驱动程序安装到 Windows中后,在设备管理器里,设备会显示感叹号,无法启动工作,如下图:

数字签名的驱动程序安装到 Windows中后,在设备管理器里,设备会显示感叹号,无法启动工作

所以,如果一个硬件驱动没有微软发布的数字签名,则会在安装时会被 Windows 拦截警告,提示没有数字签名或者驱动没有发布者,而且更可能的是导致设备驱动启动不了不工作。这一切源于微软对Windows系统保护,防止没有进行数字签名认证的驱动对Windows造成的破坏,因为驱动会涉及到系统内核中一些重要的指令,稍有不慎就造成Windows系统的死机和蓝屏。

后,可能有驱动开发者要问,我可以用代码签名证书为驱动进行数字签名,为什么要WHQL签名?

因为根据微软新政策,受微软信任的第三方内核模式代码签名交叉证书,将于2021年4月全部到期。此后,微软将成为Windows内核模式代码(驱动程序)签名的提供商。也就是说,以前第三方CA颁发的代码证书可以签名驱动使用,是因为签名时有微软给的交叉证书,现在微软给的交叉证书到期了,以后驱动签名规则其实是变了,驱动是在系统内核模式下工作的,所以绝大数驱动都是要经过WHQL测试认证,从而获得微软官方发布的数字签名才可以正常工作。

如下是微软给第三方CA颁发的可信交叉证书到期时间:

微软交叉证书到期时间

同时,经过WHQL测试认证签名后的硬件驱动安装时会实现驱动静默安装,不会弹出任何警告,可以给用户很好的使用体验,让驱动有很好的稳定性,不会像用代码签名证书签名后的驱动安装时会弹出如下弹窗(Trusted publishers警告):

Trusted publishers警告

WHQL签名认证其实是有其自身复杂性,具有一定的技术门槛,不管是在认证平台搭建环节,或者对微软签名策略的了解,以及驱动签名对各版本Windows系统的适配性,甚至认证过程中对驱动的必要修改,这对很多驱动开发者或驱动开发企业的开发人员来说,很难详细掌握。环度网信作为一家专注于数字证书领域多年的企业,拥有成熟的 WHQL 测试经验和相关技术,根据市场需求,为广大驱动开发者提供了多种WHQL认证套餐,见:

WHQL 测试方案 https://www.ihuandu.com/whql.html