数字签名和 PnP 设备安装 (Windows Vista 及更高版本)

在 Windows Vista 和更高版本的 Windows 上,即插即用 (PnP) 设备安装使用驱动程序包目录文件的数字签名执行以下操作:

  • 验证驱动程序包的发布者的身份。 Windows 使用该标识允许用户选择是否信任驱动程序的发布者。

  • 确定驱动程序包在发布后是否已更改。

Windows Vista 和更高版本的 Windows 上的 PnP 设备安装支持 以下类型的驱动程序包数字签名:

  • 可用于向公众发布的驱动程序包的签名类型:

    • Windows 签名机构为:
      1. 收件箱驱动程序包
      2. 通过 Windows 硬件质量实验室认证和签名的驱动程序包 (WHQL)
      3. Windows 持续工程 (SE) 更新。
    • 不是由 Windows 签名机构生成的但符合 PnP 设备安装签名要求的签名
  • 仅在企业网络环境中部署驱动程序包的签名,这些环境由企业 CA 创建和管理的数字证书创建。 有关如何配置企业 CA 的详细信息超出了本文档的范围。

    有关如何创建企业 CA 的信息,请参阅 代码签名最佳做法

  • 可在开发和测试驱动程序期间内部使用的签名类型:

Windows Vista 和更高版本的 Windows 包括以下功能,这些功能为第三方生成的签名提供支持:

  • 管理员可以控制哪些驱动程序发布者受信任。 Windows Vista 和更高版本的 Windows 从受信任的发布者安装驱动程序,而无需提示。 它永远不会从管理员选择不信任的发布者安装驱动程序。

  • 驱动程序签名策略始终设置为 Warn。 这消除了 Windows Server 2003、Windows XP 和 Windows 2000 中可用的 “忽略 ”和“ 阻止 ”选项。 管理员必须始终授权从尚不受信任的发布者安装未签名的驱动程序或驱动程序。

  • 所有 设备设置类 均等处理。 在 Windows Server 2003、Windows XP 和 Windows 2000 上,由 WHQL 签名的驱动程序包必须具有一个 INF 文件,该文件指定在 %SystemRoot%/inf/Certclas.inf 中定义的设备安装类。 否则,Windows 会将驱动程序包视为无符号。

  • 从 Windows Vista 开始,当有多个兼容的驱动程序包可供选择时,操作系统用于选择最佳驱动程序包的排名算法包括具有第三方签名的驱动程序包。

    此算法按以下方式对驱动程序包进行排名:

    • 如果禁用 AllSignersEqual 组策略 ,则操作系统对使用 Microsoft 签名的驱动程序包进行排名高于使用第三方签名签名的驱动程序包。 即使使用第三方签名签名的驱动程序包在所有其他方面与设备更匹配,也会发生此排名。
    • 如果启用了 AllSignersEqual 组策略 ,则操作系统对所有数字签名的驱动程序包进行同等排名。

    注意 从 Windows 7 开始,默认情况下启用 AllSignersEqual 组策略 。 在 Windows Vista 和 Windows Server 2008 中,默认情况下禁用 AllSignersEqual 组策略。 IT 部门可以通过启用或禁用 AllSignersEqual 组策略来替代默认排名行为。

在安装驱动程序包之前,Windows 会分析 驱动程序包的 数字签名。 如果存在签名,Windows 使用该签名来验证驱动程序包中的文件。 根据此分析的结果,Windows 将数字签名分类如下:

  • 由 Windows 签名机构签名。 这些驱动程序包包含在 Windows (收件箱驱动程序) 的默认安装中,由 WHQL 签名发布,或者由 Windows SE 签名。

  • 由受信任的发布者签名。 这些驱动程序包已由第三方签名,并且用户已显式选择始终信任此发布者签名的驱动程序包。

  • 由不受信任的发布者签名。 这些驱动程序包已由第三方签名,并且用户已明确选择从不信任此发布者的驱动程序包。

  • 由未知信任的发布者签名。 这些驱动程序包已由第三方签名,用户尚未指示是否信任此发布者。

  • 改变。 这些驱动程序包已签名,但 Windows 检测到 驱动程序包 中的至少一个文件在包签名后已更改。

  • 符号。 这些驱动程序包未签名或签名无效。 必须使用受信任的 CA 颁发的证书来创建有效的签名。

从 Windows Vista 开始,当操作系统首次在计算机上安装驱动程序包时,它会在 驱动程序存储中预安装或暂存驱动程序。 Windows 随后将使用驱动程序存储中驱动程序包的副本,以无提示方式为匹配设备安装驱动程序包。 当 Windows 为设备安装预安装的驱动程序包时,不需要用户交互。

Windows 是否预安装 驱动程序包 取决于签名类别、用户凭据和用户交互,如下所示:

  • 由 Windows 签名机构或受信任的发布者签名。 Windows 以无提示方式预安装适用于系统管理员和标准用户的驱动程序包, (没有管理员凭据的用户) 。 Windows 不显示任何用户对话框。

  • 由不受信任的发布者签名。 Windows 不会预安装驱动程序包。

  • 由未知信任的发布者签名。 Windows 向系统管理员显示一个对话框,告知管理员驱动程序包的发布者尚不受信任。 该对话框为管理员提供了安装驱动程序包的选项和始终信任发布者的选项。 Windows 不会向标准用户显示对话框,也不会预安装标准用户的驱动程序包。

  • 已更改或无符号。 Windows 显示一个对话框,该对话框适当警告系统管理员无法验证签名。 该对话框为管理员提供安装或不安装驱动程序包的选项。 Windows 不向标准用户显示对话框,也不预安装标准用户的驱动程序包。

有关驱动程序签名和安装的详细信息,请参阅 签名类别和驱动程序安装