文章目录

  • 第一部分:windows驱动数字签名之WHQL完整流程
    • 一、驱动数字签名背景
    • 二、驱动程序数字签名解决方案—WHQL认证
      • 1. 对开发者的影响
      • 2. WHQL认证主要作用
    • 三、申请WHQL认证的主要目的
    • 四、认证周期
    • 五、申请WHQL认证流程(重要)
      • a. 申请EV代码签名证书,相当于数字的企业营业执照。
      • b. 用申请好的EV证书申请微软认证帐号
      • c. 与微软签订电子合同。和微软签订书面保证协议
      • d. 使用微软提供的测试平台测试设备,生成测试报告
      • e. 生成测试报告与驱动程序包,并用数字证书签名
      • f. 将100%通过测试并签署后的文件上传微软并等待微软审核。
      • g. 通过审核,可以使用微软交叉签署的驱动程序,同时获得微软LOGO 授权
    • 六、微软Azure AD、 Azure Active Directory
  • 第二部分:WHQL认证环境部署以及测试
    • 1. Windows Hardware Lab Kit (Windows HLK)
      • 如何查询windown版本信息
      • HLK 和 HCK区别
    • 2. HLK 测试框架环境搭建
      • 搭建 WHLK 平台
        • 管理端 程序安装
        • 客户端 程序安装
    • 3. 运行 HLK/WHQL 测试
      • HLK中无法在驱动程序列表中看到目标驱动程序
      • 安装驱动失败
      • HLK测试用例报错
        • 具体错误:WDTF_TEST : Unrecognized log format
        • 报错:Code Integrity FAILURES
    • 4. 关于证明签名
      • 使用官方命令批量驱动签名
      • 过程遇到问题总结
        • 微软验证不通过,报错:There are files at the root of the cabinet:

第一部分:windows驱动数字签名之WHQL完整流程

一、驱动数字签名背景

在WINDOWS中最严重的问题就是“蓝屏”,蓝屏通常都是由硬件设备的驱动程序造成的,驱动程序处在系统内核和应用程序的中间层,也可以使用内核的内存,因此驱动程序不稳定会直接导致系统蓝屏。

因此,驱动一般需要驱动数字签名。有了数字签名的驱动操作系统会认为它是安全的、稳定的、有版权的驱动,安装的时候也会明显更顺畅,可以让用户放心加载使用。

驱动数字签名是指运用在驱动上的数字签名,这种签名就如同文件上的签章,认证驱动程序的签发者身份。

二、驱动程序数字签名解决方案—WHQL认证

由于受微软信任的Digicert,Entrust,Sectigo,Thawte等第三方驱动代码签名交叉证书已全部过期,微软不再接受EV代码签名证书为驱动程序进行内核数字签名。取而代之的是需要对驱动程序做WHQL认证(微软徽标认证)。

WHQL认证,也叫Windows徽标认证,由美国微软公司(Microsoft)设立的认证,Windows微软徽标认证的全名为Windows Hardware Quality Labs(WHQL), 中文名称是Windows硬件设备质量实验室。

鉴于微软的最新要求,微软从2021年4月底开始不再接受代码签名证书给驱动程序进行数字签名(注意:普通非驱动类软件依然可以使用代码签名证书),取而代之的是需要对驱动程序做WHQL认证(微软徽标认证)。 换言之,驱动程序的发行机构或硬件产品生产商需要为驱动程序申请微软的WHQL认证,从而获得微软官方的数字签名证书。
WHQL认证通过使用微软的测试平台,对设备和驱动进行严格的测试,通过测试的基本上不会造成系统的故障。

简单地说,新版本windows,在 Secure Boot 打开的情况下,Windows 基本上只会接受由微软签名的驱动(其他驱动一概不认,不能安装不能启动)。

总结: 根据微软的相关要求,微软将不再支持第三方代码签名证书给驱动程序进行内核交叉签名,取而代之的便是要对驱动程序做 WHQL 认证,从而获得微软官方的数字签名。

1. 对开发者的影响

独立开发者:编写驱动并分发变得困难了一些,除非你拥有一家公司并通过 EV 认证,然后才可以让微软签署驱动。
传统内核扩展开发者:在测试环境跑一遍 HLK(WHQL),像提交 App 一样把驱动和 WHQL 报告提交给微软来签署证书并分发。

2. WHQL认证主要作用

作用对象:驱动程序、硬件设备。
主要作用:
1)解决设备和驱动与Windows系统的兼容性、稳定性、互通性,签名验证;
2)帮助客户识别那些能满足平台特性的基本定义并保证终端用户高品质的Windows体验的系统和外围设备;
3)有权在产品和包装上使用“Designed for Windows”徽标,获得微软Windows品牌及用户对产品与Windows兼容认可。

认证流程:申请EV代码签名证书→建立WINDOWS徽标认证帐户→提交微软实验室,解决Windows下驱动签名验证→产品软硬件测试→获得微软的LOGO(徽标)授权。

三、申请WHQL认证的主要目的

a.提升产品在Windows平台下的兼容性和稳定性。
b.获得微软Windows LOGO使用权。
c. 驱动获得微软数字签名,使驱动能顺利安装上并无任何警告提示。
d. 分发驱动到Windows Update中心,实现驱动联网自动安装。

微软从2021年4月底开始不再接受代码签名证书给驱动程序进行数字签名(注意:普通非驱动类软件依然可以使用代码签名证书),取而代之的是需要对驱动程序做WHQL认证(微软徽标认证)。

四、认证周期

一般的认证周期为7个工作日内完成。

五、申请WHQL认证流程(重要)

以下是微软官方 L WHQL 认证的流程 :

  1. 申请 EV 代码签名证书,相当于数字的企业营业执照。
  2. 用申请好的 EV 证书申请微软认证帐号。
  3. 与微软签订电子合同。
  4. 使用微软提供的测试平台测试设备,生成测试报告。
  5. 生成测试报告与驱动程序包,并用数字证书签名。
  6. 将 100%通过测试并签署后的文件上传微软并等待微软审核。
  7. 通过审核,可以使用微软交叉签署的驱动程序,同时获得微软 LOGO

a. 申请EV代码签名证书,相当于数字的企业营业执照。

进行驱动程序WHQL认证的第一步,就是必须使用EV代码签名证书建立微软硬件开发者中心仪表板账号。如果你希望驱动程序能够正常加载,获取一张EV代码签名证书必不可少!

从微软承认的五家 CA(微软要求必须是Entrust, Symantec, Digicert, Globasign等权威CA机构颁发的EV代码签名证书) 里申请 EV 代码签名证书。(这一般需要你拥有一家公司,或者你是某个公司的雇员,你们公司已经申请了)

b. 用申请好的EV证书申请微软认证帐号

组织管理员必须注册 Windows 硬件开发人员中心计划。完成两个账户 一个是开发者账户,一个是微软Azure AD账户配置后 才能开始提交驱动程序验证。官方参考

  1. 创建Azure AD账户

根据微软要求,想要申请WHQL认证的公司必须要申请Azure AD账户。


如果账号注册过了 工作账号(Azure AD) 这里直接选择登录Azure AD

第一次,我们是没有 Azure AD 目录,我们需要点击 免费新建目录,创建一个。
可以免费创建一个。你必须有权创建目录,并代表你的公司签署法律协议。建议先咨询 IT 部门。

  1. 签署一个示例 exe 文件来证明你拥有 EV 代码签名证书
    和 App 开发者账户类似,签署一个示例 exe 文件来证明你拥有 EV 代码签名证书。
    请在开始注册过程之前查看以下要求:


3. 创建完Azure AD账户后,我们就可以登录 Microsoft 合作伙伴中心
上面步骤处理完成后,我们会有一个独立的 Azure AD账户,可以使用这个账号我们 登录Microsoft 合作伙伴中心 提交驱动。

微软合作伙伴中心网址

点击如下图标,我们就可以进入,驱动提交界面:

c. 与微软签订电子合同。和微软签订书面保证协议

d. 使用微软提供的测试平台测试设备,生成测试报告

在本地运行 HLK/WHQL 测试,在提交驱动时提交 WHQL 测试结果。

查看测试结果
测试完成后,可点击“Results”页签查看测试结果

e. 生成测试报告与驱动程序包,并用数字证书签名

微软HLK测试
参考URL: https://blog.csdn.net/langzi0781/article/details/117365588

在设备通过了所有必要的测试后,可以创建提交程序包(.hlkx 文件)来进行提交。
创建提交包,参考官方:https://docs.microsoft.com/zh-cn/windows-hardware/test/hlk/getstarted/step-8-create-a-submission-package

Windows HLK 工作室支持包创建,因此,不需要使用单独的提交工具。 它支持添加完成认证所必需的资源文件(驱动程序、符号、勘误表)。 还可以将多个包(.hlkx 文件)合并为一个包。

注意: 购买GlobaSign ev证书,并获取安装包

下图显示了 HLK 工作室的“包”选项卡。
1) 继续回到HLKStdio工具,点击”AddDriverFolder”按钮,选择驱动文件夹

选择已测试的系统

点击”Locales”页签,选择支持所有语言

点击”CreatePackage”开始创建HLK包。


点击”Ok”按钮

输入证书密码:


最终生成的test.hlkx文件将要提交到微软的合作伙伴中心完成签名。

问题描述
点击创建 create package,选择.cert证书后,报错:package creation stopped due to drivers failing signability tests

问题分析:
自己测试,添加驱动文件夹时,发现你的驱动 sys 必须有一个对应的 .inf,才可以成功给驱动签名。

解决方法:
给你的驱动,编写对应inf文件。

f. 将100%通过测试并签署后的文件上传微软并等待微软审核。

只有所有 WHQL 测试通过了才能签署。

祝贺你,你已使用 Windows HLK 完成了设备的端到端测试。 请通过 Windows 硬件开发人员中心仪表板提交经过签名的包(.hlkx 文件)。 (有关详细信息,请参阅 Windows 硬件开发人员中心仪表板)

按照b步骤中的网址,进入到 驱动提交界面。
微软合作伙伴中心网址


注意,如果你没有上传驱动对应的symbol ,在上传过程中,会有如下提醒:

Symbols are missing or placed incorrectly for this submission. It is recommended to upload symbols within symbol folder of the submission. For more information click here.
对于此提交,符号缺失或错误地放置。建议将符号上传到提交的符号文件夹中。欲了解更多信息,请点击此处。

g. 通过审核,可以使用微软交叉签署的驱动程序,同时获得微软LOGO 授权

如下图,就是通过审核。我们可以通过点击 下载签名后的文件。
Your submission is certified! Your signed packages are available below, where you can add DUA packages and create shipping labels. Any shipping labels you created earlier are processing.
您的提交已获得认证!您的签名软件包可在下面提供,您可以在其中添加DUA软件包并创建shipping 标签。您先前创建的任何shipping 标签都在处理。

解压后有3个文件,如下:

查看sys驱动文件的签名,发现多了一个Microsoft Windows Hardware Compatibility Publisher 的签名。

shipping labels:
英[ˈʃɪpɪŋ ˈleɪblz]
美[ˈʃɪpɪŋ ˈleɪblz]
网络 运输标签; 发货标签;
[例句]Is the supplier identifying via some method on shipping labels to designate compliance of the parts to specifications?
供应商是通过出货标签的方法来确认的部件是符合详细规格的吗?

同时,我们也可以下载,认证通过的证明报告:
下载显示,认证结果如下:

六、微软Azure AD、 Azure Active Directory

微软Azure AD简介
什么是 Azure Active Directory?

Microsoft 目前提供若干基于云的产品/服务,它们都可以使用 Azure AD 来标识用户和控制访问权限。

  • Microsoft Azure
  • Microsoft 365
  • Microsoft Intune
  • Microsoft Dynamics 365

公司或组织注册使用其中某项产品/服务时,将为其分配默认目录,即 Azure AD 实例。 此目录包含有权访问公司已购买的每种服务的用户和组。 此默认目录可称为“租户”。 租户表示组织以及分配给该组织的默认目录。

第二部分:WHQL认证环境部署以及测试

1. Windows Hardware Lab Kit (Windows HLK)

Windows Hardware Lab Kit (Windows HLK) 是一个测试框架,用于测试 Windows 11、Windows 10 以及从 Windows Server 2016 开始的所有 Windows Server 版本的硬件设备和驱动程序。 你的产品必须通过使用 Windows HLK 进行的某些测试,才有资格加入 Windows 硬件兼容性计划。

使用虚拟 HLK (VHLK) 进行认证! VHLK 是在 VHDX 上预先安装并预先配置的完整 Hardware Lab Kit,可以作为虚拟机启动。 使用 VHLK 可以节省设置时间,可以快速地作为控制器启动,并且可以从虚拟机运行 Windows 硬件认证。


Windows HLK 仅支持在 Windows 11、Windows 10 以及从 Windows Server 2016 开始的 Windows Server 版本上进行测试。 若要测试以前版本的 Windows,请使用 Windows 8.1 的硬件认证工具包。

总结:针对 Windows 11、Windows 10 或限定版本的 Windows Server 进行开发,则必须使用正确的 HLK 版本。不同的操作系统,官方提供了不同的镜像,是区分开的。

如何查询windown版本信息

官方window 版本信息列表

winver

systeminfo

HLK 和 HCK区别

HLK 和 HCK都是用于认证Windows硬件设备的测试框架。HCK 是针对老操作系统,HLK 是针对新操作。

HCK支持Windows 8.1或Windows 7认证的硬件。您还可以使用HCK测试Windows Server 2008 R2到Windows Server 2012的Windows Server发布版本。 官方地址

2. HLK 测试框架环境搭建

官方参考(Windows HLK 入门)
参考URL: https://docs.microsoft.com/zh-cn/windows-hardware/test/hlk/getstarted/windows-hlk-getting-started

一般来说测试环境由测试服务器和测试机器组成。不过一些复杂的测试项也可能会用到各自测试仪器来辅助我们完成测试。

测试网络架构可以分成两类:工作组模式和域模式。 一般来说工作组模式已经足够应付各自测试了,除非你要并发成百上千台的测试机。

在开始测试之前,请确保测试环境符合必需的要求。Windows HLK 由两个组件组成:一个 HLK 测试服务器;一个或多个测试系统。

  • HLK 测试服务器。通常称为控制器,它是包含两个部分的测试服务器:Windows HLK Controller 和 Windows HLK Studio。Controller 软件是用来管理测试系统上所运行的测试的引擎。Studio 软件是一种管理工具,允许你针对与测试服务器所连接的任何测试系统选择和安排测试。Controller 和 Studio 都从 Windows HLK 安装源进行安装。安装完成后,测试服务器将包含单独的安装程序,以安装远程 Windows HLK Studio 和 Windows HLK Client。
    一个控制器可控制一系列客户端计算机。控制器只能管理和访问它们所控制的客户端计算机。

  • 测试系统。也称为客户端计算机,每个测试系统都可以具有适用于各种测试方案的不同配置,包括不同的硬件、操作系统、Service Pack 和驱动程序。每个测试系统仅可以与一个测试服务器相关联。你可以通过从测试服务器上的共享网络位置直接运行 Windows HLK Client 软件安装程序来配置各个测试系统。

搭建 WHLK 平台

官方文档:https://docs.microsoft.com/zh-cn/windows-hardware/test/hlk/getstarted/step-1-install-controller-and-studio-on-the-test-server

管理端 程序安装

a. 安装操作系统 windows server 2016。
b. 从 msdn.microsoft.com 下载最新的 Redstone 的 KitPreinstall.zip,里面有个
readme.txt,在 windows server 2016 上安照指示安装那些证书和注册表;
c. 从 msdn.microsoft.com 下载最新的 HLK,在 windows server 2016 上安装 HLK,
controller 和 Studio 都一起安装。
这个 HLK 会自动把客户端需要安装的部分在一个文件夹中共享出来;

d. 按如何架构搭建 WHLK 测试平台,HLK Controller 和 Studio 我们合二为一安装在这
台 Server2016 上了:

推荐该方案
管理端,我们除了自己安装exe,也可以直接使用官方的vhdk,使用Hyper-V直接安装他们提供虚机。
Windows 的虚拟硬件实验室工具包 (VHLK) 是在 VHD 上预配置的 HLK 控制器,可在 Hyper-V 中作为 VM 启动。
Windows 虚拟硬件实验室工具包 (VHLK) 入门
官方参考:https://docs.microsoft.com/zh-cn/windows-hardware/test/hlk/getstarted/getstarted-vhlk
其他参考https://docker.blog.csdn.net/article/details/125047263

PS: 强烈推荐该方法,亲测可用!

客户端 程序安装

在测试系统上安装客户端
官方参考: https://docs.microsoft.com/zh-cn/windows-hardware/test/hlk/getstarted/step-2–install-client-on-the-test-system-s-

e. 从客户端打开共享文件夹,安装
\管理端ip address\HLKInstall\Client\Setupamd64.exe 或 Setupx86.exe
根据你客户端 OS 的类型选择对应的安装包。

使用官方镜像的话,默认登录凭据为 HLKAdminUser,密码为 Testpassword,1

PS: 这一步是最难的,也是踩坑花费时间最长的。
经过实测,使用中文的操作系统,虽然节点端可以上线,但是跑测试,会报错。 使用中文操作系统安装英语语言包,切换了region,测试结果也报错。

经验总结:在安装hlk client之前,做准备工作如下:
cpu勾选了虚拟化;
直接安装的英文操作系统;
关闭了防火墙(保证管理到节点、节点到管理必须通);
加载了并启动了驱动,
驱动启动注册表设置了 开机启动 Start 值为2

f. 回到 Server2016,运行 HLK Studio,右击”Root” ,Create Machine Pool
client端安装完成后,server侧的HLK studio -> configuration -> default pool中应该会看到client

3. 运行 HLK/WHQL 测试

运行测试,就是回到管理端 Server2016,运行 HLK Studio,右击”Root” ,Create Machine Pool
client端安装完成后,server侧的HLK studio -> configuration -> default pool中应该会看到client


客户端安装驱动程序

因为测试的驱动还未签名,win10安装未签名的驱动会失败,需要重启系统并禁用驱动强制签名功能。Win10禁用驱动强制签名的方式参考:
https://jingyan.baidu.com/article/624e74594dbc8d34e8ba5aa6.html

  1. 选择要测试的目标

点击”Selection”标签,选择前面创建的计算机池,选择要测试的设备

Windows HLK Studio 检测由设备实现的所有功能。单个可测试功能称为“目标”。一个设备可以包含多个目标,目标由一个或多个硬件 ID 来表示。在“选择”选项卡上,可以通过使用以下视图来筛选要测试的内容:

  • 系统 - 用于测试完整客户端或服务器系统。
  • 设备和打印机 - 用于测试与测试系统相连的外部设备。此设备通常出现在测试系统上的“开始”>“设备和打印机”中。
  • 设备管理器 - 用于对测试系统的组件或外部设备(例如网卡)进行测试。这是最详细的视图。
  • 软件设备 - 用于对测试系统上已安装的筛选驱动程序、防火墙和防病毒软件进行测试。
  1. 选择并运行测试


运行测试期间,测试客户端 会多次重启。注意观察,是否会卡壳- -!

  1. 查看测试结果
    测试完成后,可点击“Results”页签查看测试结果

  2. 安装ev签名证书

打开安装EV证书的电脑后,点击该电脑的开始菜单,输入”mstsc”远程工具,再连接server2016,此时再打开GlobaSign软件,就可以看到令牌了

  1. 创建提交包

继续回到HLKStdio工具,点击”AddDriverFolder”按钮,选择驱动文件夹

最终生成的test.hlkx文件将要提交到微软的合作伙伴中心完成签名。

所有测试项通过后,点 package,Add Driver Folder,把我们 x86/x64 的已签名的驱
动加进来:

自行完成HLK测试,所有测试项目通过后,将测试结果hlkx包 进行EV证书签名,然后提交到微软网站。

HLK中无法在驱动程序列表中看到目标驱动程序

问题描述:
测试客户机状态已经成为READY,但是无法在驱动程序列表中看到需要测试的驱动程序。可能是什么原因导致的呢?

解决方案:
参考自:https://social.msdn.microsoft.com/forums/zh-CN/fd0be4ed-7f22-41cd-85a0-603b4c02cc1a/hlk200132608027861223123953721160312432420721015349202001330475?forum=2150

这个问题挺常见的。

通常建议的解决办法:

先安装驱动程序,再安装HLK client

亲测通过!

安装驱动失败

bcdedit.exe /set nointegritychecks on

要恢复签名,就在“命令提示符(管理员)”中输入或复制:
bcdedit.exe /set nointegritychecks off 回车,就行了

winser2019测试好像,不行,尝试window测试模式!

使用bcdedit /set testsigning on命令进入测试模式。

bcdedit /set testsigning on

然后重启电脑,亲测,winser2019测试模式,可以正常加载驱动

HLK测试用例报错

官方论坛:Windows硬件开发者论坛(包含WHQL测试)
https://social.msdn.microsoft.com/Forums/zh-CN/home?forum=2150‘
Win10 RS 中 HyperVisor 代码完整性测试失败
https://social.msdn.microsoft.com/forums/en-US/a1ba476a-380c-423c-b607-897696076602/hypervisor-code-integrity-test-failure-in-win10-rs?forum=whck

如下在具体fail项目上,右键查看具体的官方文档,了解情况。


如下,显示这个测试用例的相关描述文档:

双击 Logs下的Te.wtl 可以查看测试日志报告:Test Log Report - Complete Report

fail项目举例:
HyperVisor Code Integrity Readiness Test (HyperVisor代码完整性准备测试)

关于: HyperVisor 代码完整性准备测试 (https://techcommunity.microsoft.com/t5/windows-hardware-certification/driver-compatibility-with-device-guard-in-windows-10/ba-p/364865)

A new HLK test, the HyperVisor Code Integrity Readiness Test , needs to pass for HVCI drivers to be approved for Microsoft signing. HVCI-compatible drivers are required for both Desktop and Server SKUs. The HLK test is a basic test written to make sure that HVCI-compatible drivers are correctly loaded and run by the OS.
新的 HLK 测试,即 HyperVisor 代码完整性准备测试 ,需要通过 HVCI 驱动程序才能获得 Microsoft 签名的批准。桌面和服务器 SKU 都需要兼容 HVCI 的驱动程序。HLK 测试是一个基本测试,用于确保操作系统正确加载和运行 HVCI 兼容驱动程序。

我们看到这个测试项的type, 提醒我们这个测试需要特别的配置,在执行测试前

尽管简单地通过 HLK 测试就足以获得驱动程序的 Microsoft 签名,但我们强烈建议在启用 Device Guard 的情况下进行彻底的功能测试。例如,可能存在违反 NX 保护的错误编码内存分配导致测试无法捕获的故障。驱动程序作者应在启用 Device Guard 的同时彻底测试驱动程序。
在驱动程序开发和 HLK 测试期间,应禁用 Device Guard,因为 Device Guard 可能会阻止驱动程序加载。

Device Guard Readiness Tool

The Device Guard and Credential Guard hardware readiness tool can also be used to check for HVCI compatibility of all installed drivers on the device. The download includes a readme file that contains usage information. Note that while running the Readiness Tool, Device Guard must be disabled, as Device Guard might prevent the driver from loading, and the driver won’t be available for the Readiness Tool to test. For more information about the Readiness Tool, see Use the Device Guard Readiness Tool to evaluate HVCI driver compatibility

Device Guard 准备工具
Device Guard 和 Credential Guard 硬件准备工具 也可用于检查设备上所有已安装驱动程序的 HVCI 兼容性。下载包含一个自述文件,其中包含使用信息。请注意,在运行 Readiness Tool 时,必须禁用 Device Guard,因为 Device Guard 可能会阻止驱动程序加载,并且驱动程序将无法供 Readiness Tool 测试。有关准备工具的详细信息,请参阅 使用 Device Guard 准备工具评估 HVCI 驱动程序兼容性

验证驱动程序是否与 Windows HyperVisor 代码完整性功能兼容
官方网址 :https://docs.microsoft.com/en-us/windows-hardware/test/hlk/testref/b972fc52-2468-4462-9799-6a1898808c86

对 Windows HLK 测试失败进行故障排除
官方网址:https://docs.microsoft.com/en-us/windows-hardware/test/hlk/user/troubleshooting-windows-hlk-test-failures

具体错误:WDTF_TEST : Unrecognized log format


使用 hello.sys demo 测试驱动,我们修改为英文操作,测试结果通过,上面报错消失。

报错:Code Integrity FAILURES

问题描述:
hello驱动通过了,但是我们自己的驱动还有报错:Code Integrity FAILURES ,如下所示:

  1. 报错日志中,给的官方url: http://go.microsoft.com/fwlink/?LinkId=787617

  2. 可能需要解决这个 代码完整性检查(Hypervisor-Protected Code Integrity)
    https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/code-integrity-checking

verifier /flags 0x02000000 /driver MyDriver.sys

该功能将在下次启动后激活
加载启动hwaf,蓝屏;加载启动hello,没有问题。

4. 关于证明签名

通过证明对 Windows 10 及更高版本的驱动程序进行签名
官方:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/dashboard/code-signing-attestation

官方描述:
可通过多种方式将驱动提交到门户。对于生产驱动程序,应提交HLK/HCK测试日志。若要在仅限win10客户系统上进行测试,可以提提交驱动程序进行 证明签名,这不需要HLK测试。

  1. 先所有驱动使用ev证书进行 ev签名 单签sha256

  2. 创建 CAB 文件
    将 sys文件,的inf、pdb文件 使用 ev代理商给的工具,打包成 .cab文件
    每个sys文件,还要有对应的inf、pdb文件

典型的 CAB 文件提交必须包含以下内容:

  • 驱动程序本身,例如 Echo.sys
  • 仪表板用来促进签名过程的驱动程序 INF 文件。
  • 符号文件,用于调试信息。 例如,Echo.pdb。
  • 目录 .CAT 文件是必需的,仅用于公司验证。 Microsoft 会重新生成目录文件,并替换已提交的任何目录文件。

CAB 文件中的每个驱动程序文件夹都必须支持同一组体系结构。 例如,它们必须支持 x86、x64,或者全都必须同时支持 x86 和 x64。

  1. 使用 EV 证书对 CAB 文件进行签名
    给这个 .cab 使用ev证书 进行 sha256签名

  2. 使用合作伙伴中心提交 EV 签名的 Cab 文件, 即上传.cab文件

使用合作伙伴中心提交 EV 签名的 Cab 文件
转到合作伙伴中心硬件仪表板并使用凭据登录。
选择“提交新硬件”。

如下,Certification Type证书类型 和我们之前签名走HLK 不同,这里显示的是 attestation 是证明签名


attestation
美: [ˌæteˈsteɪʃ(ə)n]
英: [.æte’steɪʃ(ə)n]
n. 证明;证据;证明书;宣誓
网络 鉴证;认证;证实

使用官方命令批量驱动签名

官方参考:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/dashboard/code-signing-attestation

  1. 驱动按照官方说明整理好目录结构

  2. 对sys使用 ev代理商给工具,批量给sys 使用ev证书进行sha256单签名。

  3. 编写ddf

  4. 执行MakeCab命令,生成.cab文件


5. 使用ev证书给 .cab文件签名
6. 上传微软

过程遇到问题总结

微软验证不通过,报错:There are files at the root of the cabinet:

问题描述:

问题分析:
搜索关键字
There are files at the root of the cabinet:

官网描述:https://docs.microsoft.com/en-us/windows-hardware/drivers/dashboard/hardware-submission-create

制作出来的cab文件,inf、sys是放在子目录下的。使用官方制作的cab文件的命令,制作出来的就是有个子目录。

问题解决;
参考官方制作cab的方法制作cab文件:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/dashboard/code-signing-attestation

windows驱动数字签名之WHQL完整流程 | WHQL认证环境部署以及HLK测试相关推荐

  1. WHQL认证环境部署攻略四  结果查看测试报告

    接WHQL认证环境部署攻略三 第7步:查看测试结果和日志文件 的结果选项卡显示有关每个测试的详细信息.每次测试完成后,状态列将更新结果 - 通过或失败. 下图显示了Studio Results选项卡. ...

  2. 一份带有浓重Windows气息的PARL多机多卡训练环境部署教程

    一份带有浓重Windows气息的多机多卡PARL训练环境部署教程 深度学习小白挑战Ubuntu18.04多机多卡PARL训练环境部署全纪录 1.踩坑一览 2.安装双系统 2.1 变出个空白分区 2.2 ...

  3. WHQL认证环境部署以及测试攻略二之HLK或者HCK软件的安装

    WHQL认证目前所使用的测试软件有WLK1.6,HCK2.1,HLK. WLK1.6主要是针对Windows Server 2003,已经不是主流测试了,基本属于弃用状态. HCK2.1主要是针对Wi ...

  4. 2021年最新WHQL认证申请流程

    2021年最新WHQL认证申请流程 WHQL是Windows Hardware Quality Lab.的简称, 翻译成中文是windows系统硬件质量实验室.实验室主要执行windows徽标计划,检 ...

  5. Windows驱动开发入门系列教程

    从事驱动开发也有一段时间了,从最初的无头苍蝇到懵懵懂懂,到入门,直至今天,感觉一路走来,走了不少的弯路,只因为没有人引导.前几天,一个朋友问到我怎么学习Windows驱动开发,我就想到把我学习Wind ...

  6. windows驱动送测WHQL时inf文件注意事项

    windows驱动送测WHQL时inf文件注意事项 windows驱动送测WHQL时inf文件注意事项 近期遇到一个问题,通过WHQL测试且打好了微软签名的驱动文件在安装时报错,说有文件的指纹不在签名 ...

  7. 2019年最新WHQL认证申请流程

    WHQL 是Windows Hardware Quality Lab.的简称, 翻译成中文是windows系统硬件质量实验室.实验室主要执行 windows徽标计 划 ,检验硬件产品和驱动程序在win ...

  8. 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 查找子弹数据的动态地址 | 查找子弹数据的静态地址 | 静态地址分析 | 完整流程 ) ★

    文章目录 前言 一.查找子弹数据临时内存地址 二.查找子弹数据的静态地址 1.调试内存地址 05A59544 获取基址 05A59478 2.通过搜索基址 05A59478 获取内存地址 0E1DC1 ...

  9. 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 完整流程演示 | 查找临时内存地址 | 查找真实指针地址 )

    文章目录 前言 一.查找子弹数据临时内存地址 二.查找子弹数据真实地址 前言 在上一篇博客 [Windows 逆向]使用 CE 工具挖掘关键数据内存真实地址 ( CE 找出子弹数据内存地址是临时地址 ...

最新文章

  1. 软件工程——视频总结
  2. Swift 数字字符串格式化
  3. java工资高还是php_java和php哪个工资高
  4. shell+中sum的用法_SUM函数从入门到进阶,不用放弃!
  5. OpenCV实现图像对齐ECC算法(附完整代码)
  6. kali如何安装netcat_Netcat常用方法汇总
  7. c语言全段字符的类别,言语理解规律整理d0c.doc
  8. C++ 指针基本概念
  9. 987C. Three displays
  10. 浅谈OpenCL四大模型之Execution Model
  11. rip协议中周期性广播路由信息的报文_RIP路由理论知识详解(一)
  12. 2016年第二季度DDoS攻击同比增长129%
  13. Python获取numpy数组中最大的5个元素(保持原顺序)
  14. Linux NAT基本流程与实现技巧
  15. Java中的网络编程
  16. Django——云笔记项目2
  17. 惠而浦将斥资30亿美元收购艾默生电气旗下爱适易;高通和格芯签署一项长期制造协议 | 美通企业日报...
  18. dnf台服空白mysql文件夹_关于雨泪大神的架设教程遇到的各种问题的解决办法
  19. MMA8451Q传感器读值
  20. Firefox的安装

热门文章

  1. 一度智信:电商店铺简介同样重要,需要如何设置?
  2. 基于ETestDEV实现某地6号线地铁TCMS系统车辆控制单元VCU测试
  3. 分布式光纤振动监测系统
  4. 华为P30的目标,改写市场格局
  5. java foreach unsupport major minor version 52.0
  6. 无线水电远程抄表系统方案
  7. 天然水晶挑选全攻略 真假水晶鉴别方法 保养净化
  8. 设备联网及PLC数据采集管理解决方案
  9. 将线程锁加在对象上与锁加在方法上的区别(模拟火车票联网售票系统:多个线程同时出票,保证每张出票的编号连续且不重复。)...
  10. 「镁客早报」国内航空公司暂停运行波音737MAX客机;英伟达将以70多亿美元收购以色列芯片制造商Mellanox...