数字签名和 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 无需提示即可从受信任的发布者安装驱动程序。 它永远不会从管理员选择不信任的发布者安装驱动程序。

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

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

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

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

    • 如果禁用 AllSignersEqual 组策略,则操作系统会将带有微软签名的驱动程序包排名高于带有第三方签名的驱动程序包。 即使一个使用第三方签名的驱动程序包在其他方面更适合设备,也会发生此排名。
    • 如果启用了 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 不向标准用户显示对话框,也不会预安装标准用户的驱动程序包。

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