你当前的位置 首页 > 各类资讯 > 业界观点

代码签名证书已经无法为驱动文件进行数字签名,快用 WHQL 认证

页面更新时间:2021-05-28   阅读数:291

开发完的 Windows 文件型(过滤型驱动)驱动被 Windows 提示“无法验证此文件的数字签名,某软件或者硬件近有所更改,可能安装了签名错误或者损毁了的文件,或者安装的文件是来路不明的恶意软件”,此类问题如何解决?

在大数据分析和精准化功能需求驱动下,Windows 文件型驱动在很多项目上需求越来越多,在功能和类型上应用的较多,不管涉及到的磁盘和文件保护驱动(主要是一些杀软和游戏厂商),还是网卡和串口上的过滤型驱动(主要是一些做网络通讯和网络安全的企业),这些文件型驱动都给程序本身带来了很多功能扩展。

以下图1就一个典型的过滤型驱动,因为还没有签名所以还缺少 cat 文件。

图 1 如下:

过滤型驱动

不管是带硬件的驱动,还是不带硬件的文件型驱动,如果要在 Windows 上使用都会面临一个较棘手的问题,就是 Windows 系统对驱动的数字签名验证问题。

以下图 2 就是一个文件型驱动在没有数字签名情况下,该驱动在 Windows 中加载时提示没有数字签名问题,驱动启动不了。

图 2 如下:

无法验证此文件的数字签名,某软件或者硬件近有所更改,可能安装了签名错误或者损毁了的文件,或者安装的文件是来路不明的恶意软件

那么如何解决以上这个问题?

种方式(意义不大):

有些驱动开发者在驱动开发测试阶段会采取关闭系统签名验证功能,在驱动在测试模式下工作,这个方法能临时解决这个问题,但是这种方式有其自身问题:

1、就是您需要对口的知识和复杂的流程去手动关闭这个系统功能(关闭方法 https://www.ihuandu.com/help/faq/207.html   );

2、重起电脑后 Windows 又恢复了系统签名验证功能,所以达不到友好的使用驱动,导致用户体验很不好,影响驱动正常工作,同时可能会出现这样或那样的未知的问题。

所以这一方式是不可取的,只适合对口人士在驱动开发价段使用。

第二种方式(目前已经无效)

很多驱动开发者在过去可以采取通过可信第三方 CA 代码签名证书给驱动加上数字签名来解决这一问题。但随着 2021 年 4 月份微软给第三方 CA 颁发的微软交叉证书全部到期,通过代码签名证书来给驱动获取数字签名的时代已经结束。如图 3 是通过代码签名证书给驱动加上数字签名后的驱动加载的情况,结果也是一样被 Windows 报“无法验证此文件的数字签名,某软件或者硬件近有所更改,可能安装了签名错误或者损毁了的文件,或者安装的文件是来路不明的恶意软件”的错误。

图 3 如下:

通过可信第三方 CA 代码签名证书给驱动加上数字签名来解决这一问题 

第三种方式(正确的解决方案)

现在单位可以解决文件型驱动签名验证问题只能移交给 WHQL 认证了。即通过对驱动程序的测试,提交给微软来获取微软官方发布的数字签名证书。

图 4 显示的是驱动通过环度 WHQL 服务来获得微软数字签名后的加载情况,较顺利的加载。

图 4 如下:

驱动通过环度 WHQL 服务来获得微软数字签名后的加载情况 

那么,如何对驱动进行 WHQL 测试呢?

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

后温馨提示,在微软对驱动签名规则变化的这一背景下(驱动需要做 WHQL 认证),环度网信较乐意以我们对口服务来为各位驱动开发者解决驱动的数字签名证书问题。