驱动程序代码签名要求

在将驱动程序提交到硬件仪表板之前,必须先使用证书对其进行签名。 组织可将任意数量的证书与其仪表板帐户关联,每一个提交都必须使用其中任何一个证书进行签名。 对与组织关联的证书(扩展验证 (EV) 和标准证书)数量没有限制。

本文提供有关驱动程序可用的代码签名类型以及这些驱动程序的相关要求的一般信息。

有关驱动程序签名要求的更详细信息,请参阅以下页面:

获取代码签名证书的位置

可从以下证书颁发机构之一购买代码签名证书:

EV 证书签名的驱动程序

你的硬件开发人员中心仪表板帐户必须关联至少一个 EV 证书,才能提交供证明签名的二进制文件,或提交供 HLK 认证的二进制文件。

下列规则适用:

  • 在提交时,注册的 EV 证书必须有效。
  • 虽然 Microsoft 强烈建议使用 EV 证书签署个人提交,但你也可以使用同样注册到你的合作伙伴中心帐户的 Authenticode 签名证书来为提交签名。
  • 所有证书都必须采用 SHA2 算法,并使用 /fd sha256 SignTool 命令行开关进行签名。

如果已有证书颁发机构批准的 EV 证书,则可将其用于建立合作伙伴中心帐户。 如果没有 EV 证书,请选择 证书颁发机构, 并按照购买说明进行操作。

证书颁发机构验证联系信息并批准证书购买后,请按照其说明检索证书。

HLK 测试和仪表板签名的驱动程序

已通过 HLK 测试的仪表板签名驱动程序适用于 Windows Vista 及更高版本,包括 Windows Server 版本。 HLK 测试是驱动程序签名的建议方法,因为它为所有 OS 版本对驱动程序进行签名。 HLK 测试的驱动程序表明,制造商严格测试其硬件,以满足所有Microsoft对可靠性、安全性、电源效率、可服务性和性能的要求,以提供出色的 Windows 体验。 测试包括符合行业标准,并遵循技术特定功能的Microsoft规范,帮助确保正确安装、部署、连接和互操作性。 要了解如何为仪表板提交创建经过 HLK 测试的驱动程序,请参阅 Windows HLK 入门

针对测试场景的 Windows 10 证明已签名驱动程序

Windows 设备安装使用数字签名来验证驱动程序包的完整性以及提供驱动程序包的软件发布者的身份。

可仅出于测试目的而提交驱动程序以便进行证明签名,而此操作无需进行 HLK 测试。

证明签名具有以下限制和要求:

  • 无法将已签名的驱动程序发布到零售受众Windows 更新。 若要将驱动程序发布到面向零售受众的 Windows 更新,则须通过 Windows 硬件兼容性计划 (WHCP) 提交该驱动程序。 通过选择 CoDev测试注册表项/Surface SSRK 选项,支持将已签名的驱动程序发布到 Windows 更新以进行测试。

  • 证明签名仅适用于 Windows 10 桌面版及更高版本的 Windows。

  • 证明签名支持 Windows 10 桌面内核模式与用户模式驱动程序。 尽管用户模式驱动程序无需由适用于 Windows 10 的 Microsoft 进行签名,但相同的证明过程可以同时用于用户和内核模式驱动程序。 对于需要在早期版本的 Windows 上运行的驱动程序,应提交 HLK/HCK 测试日志进行 Windows 认证

  • 证明签名不会为 ELAMWindows Hello PE 二进制文件返回正确的 PE 级别。 必须将这些二进制文件作为 .hlkx 包进行测试并提交,才能接收额外的签名属性。

  • 证明签名需要使用扩展验证 (EV) 证书才能将驱动程序提交到合作伙伴中心(硬件开发人员中心仪表板)。

  • 证明签名要求驱动程序文件夹名称不包含特殊字符、无 UNC 文件共享路径,且长度少于 40 个字符。

  • 当驱动程序收到证明签名时,不会进行 Windows 认证。 来自Microsoft的证明签名指示驱动程序受 Windows 信任。 但是,由于驱动程序尚未在 HLK Studio 中进行测试,因此无法保证兼容性、功能等。 接收证明签名的驱动程序无法通过Windows 更新发布到零售受众。 若希望将驱动程序发布到零售受众,则须通过 Windows 硬件兼容性计划 (WHCP) 提交该驱动程序。

  • 可接受的驱动程序更新 (DUA) 不支持使用证明签名的驱动程序。

  • 下列 PE 级别和二进制文件可通过证明处理:

    • PeTrust
    • DrmLevel
    • HAL
    • .exe
    • .cab
    • .dll
    • .ocx
    • .msi
    • .xpi
    • .xap

若要了解如何为 Windows 10 及更高版本的驱动程序创建证明签名的驱动程序,请参阅通过证明对 Windows 10 及更高版本的驱动程序进行签名

Windows Server 签名的驱动程序

  • Windows Server 2016 及更高版本不接受经过证明的设备并筛选驱动程序签名提交。
  • 仪表板仅对成功通过 HLK 测试的设备和筛选器驱动程序进行签名。
  • Windows Server 2016 及更高版本仅加载成功通过 HLK 测试的仪表板签名驱动程序。

Windows Defender 应用程序控制

企业可以使用 Windows 10 企业版 版本实施策略来修改驱动程序签名要求。 Windows Defender 应用程序控制(WDAC)提供企业定义的代码完整性策略,该策略可配置为至少需要证明签名的驱动程序。 有关 WDAC 的详细信息,请参阅 关于 Microsoft Defender 应用程序控制部署过程的计划和入门

Windows 驱动程序签名要求

下表总结了 Windows 的驱动程序签名要求:

版本 已签名的证明仪表板 已通过 HLK 测试的已签名仪表板 使用在 2015 年 7 月 29 日前颁发的 SHA-1 证书进行交叉签名
Windows Vista
Windows 7
Windows 8/8.1
Windows 10 否(截至 Windows 10 1809)
Windows 10 - 已启用 DG *配置相关 *配置相关 *配置相关
Windows Server 2008 R2
Windows Server 2012 R2
Windows Server >= 2016
Windows Server >= 2016 – DG 已启用 *配置相关 *配置相关 *配置相关
Windows IoT 企业版
Windows IoT Enterprise- 已启用 DG *配置相关 *配置相关 *配置相关
Windows IoT Core(1) 是(不需要) 是(不需要) 是(交叉签名也适用于 2015 年 7 月 29 日之后颁发的证书)

*配置从属 - 通过 Windows 10 企业版,组织可使用 Microsoft Defender 应用程序控制 (WDAC) 来定义自定义签名要求。 有关 WDAC 的详细信息,请参阅 关于 Microsoft Defender 应用程序控制部署过程的计划和入门

(1) 使用 IoT Core 构建零售产品(即非开发用途)的制造商需要驱动程序签名。 有关已批准证书颁发机构 (CA) 的列表,请参阅适用于内核模式代码签名的交叉证书。 如果 UEFI 安全启动已启用,则必须对驱动程序进行签名。