驱动程序代码签名要求

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

本文概述了可用于驱动程序的代码签名类型以及这些驱动程序的相关要求。

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

获取代码签名证书的位置

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

EV 证书签名的驱动程序

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

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

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

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

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

通过 HLK 测试的仪表板已签名驱动程序将通过 Windows 10(包括各 Windows Server 版本)在 Windows Vista 上运行。 驱动程序签名建议使用 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,如 Windows Server 2016、Windows 8 或 Windows 7。

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

  • 证明签名不会为 ELAM 或 Windows 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 企业版修改驱动程序签名要求。 Microsoft 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 安全启动已启用,则必须对驱动程序进行签名。