对驱动程序包进行测试签名
在本部分中,测试对驱动程序进行签名以在 Windows Vista 和更高版本的 Windows 上发布的计算机称为 签名计算机。 签名计算机必须运行 Windows XP SP2 或更高版本的 Windows。 例如,打算在 Windows 7 上发布的驱动程序可以在运行 Windows Vista 的计算机上进行签名。
若要使用 驱动程序签名工具,签名计算机必须安装 Windows Vista 和更高版本的 WDK。
注意 必须使用 Windows Vista 中提供的 SignTool 工具版本,以及 Windows 驱动程序工具包的更高版本 (WDK) 。 早期版本的 SignTool 不支持 Windows Vista 和更高版本的 Windows 的内核模式代码签名策略。
若要符合 Windows Vista 和 Windows 更高版本的内核模式代码签名策略和 即插即用 (PnP) 设备安装签名要求,必须在该驱动程序的开发和测试过程中对驱动程序进行签名。 可以根据驱动程序类型,按如下所示在签名计算机上对驱动程序进行签名。
注意Windows 代码签名策略要求在系统组件和驱动程序数据库中安装驱动程序包的已签名目录文件。 PnP 设备安装会自动在驱动程序数据库中安装 PnP 驱动程序的目录文件。 但是,如果使用已签名的目录文件对非 PnP 驱动程序进行签名,则安装驱动程序的安装应用程序还必须在驱动程序数据库中安装目录文件。
PnP Kernel-Mode Boot-Start 驱动程序
若要符合 64 位版本的 Windows Vista 和更高版本的 Windows 的内核模式代码签名策略,请在 启动驱动程序 文件中嵌入签名,如下所示:
从 Windows Vista 开始,在 启动驱动程序 文件中嵌入签名对于 32 位版本的 Windows 是可选的。 尽管如果内核模式驱动程序文件具有嵌入签名,Windows 将检查,但不需要嵌入签名。
若要符合 Windows Vista 和更高版本的 Windows 的 PnP 设备安装签名要求,还必须对驱动程序包的目录文件进行测试签名。 如果驱动程序文件还将包含嵌入的签名,请在对驱动程序包的目录文件进行签名之前将签名嵌入驱动程序文件中。
可以提交请求,让 Windows 硬件质量实验室 (WHQL) 对目录文件进行测试签名。 或者,可以使用测试证书自行对目录文件进行测试签名,如下所示:
-
可以验证目录文件本身的签名或目录文件中具有相应条目的单个文件的签名。
非 PnP Kernel-Mode Boot-Start 驱动程序
若要符合 64 位版本的 Windows Vista 和更高版本的 Windows 的内核模式代码签名策略,请在 启动驱动程序 文件中嵌入签名,如下所示:
从 Windows Vista 开始,在 启动驱动程序 文件中嵌入签名对于 32 位版本的 Windows 是可选的。 尽管如果内核模式驱动程序文件具有嵌入签名,Windows 将检查,但不需要嵌入签名。
PnP 设备安装签名要求不适用于非 PnP 驱动程序。
不是Boot-Start驱动程序的 PnP Kernel-Mode驱动程序
64 位版本的 Windows Vista 和更高版本的 Windows 上的内核模式代码签名策略不需要非启动 PnP 驱动程序具有嵌入签名。 但是,如果驱动程序文件将包含嵌入的签名,请在对驱动程序 包的目录文件进行签名之前将签名嵌入驱动程序文件中。
对于不是 启动启动驱动程序的 PnP 内核模式驱动程序,对驱动程序包的目录文件进行签名符合 64 位版本的 Windows Vista 和更高版本的 Windows 上的内核模式代码签名策略,以及所有 Windows Vista 及更高版本的 PnP 设备安装签名要求。
可以提交请求,让 Windows 硬件质量实验室 (WHQL) 对目录文件进行测试签名。 或者,可以使用测试证书自行测试对目录文件进行签名,方法与本部分中所述的相同方式对 PnP 内核模式 启动驱动程序的目录文件进行测试签名。
非Boot-Start驱动程序的非 PnP Kernel-Mode驱动程序
若要符合 64 位版本的 Windows Vista 和更高版本的 Windows 的内核模式代码签名策略,请在驱动程序文件中嵌入签名或对 驱动程序包的目录文件签名。
从 Windows Vista 开始,在 32 位版本的 Windows 中嵌入签名是可选的。 尽管如果内核模式驱动程序文件具有嵌入签名,Windows 将检查,但不需要嵌入签名。
PnP 设备安装签名要求不适用于非 PnP 驱动程序。
注意 与使用已签名的目录文件相比,使用嵌入式签名通常更简单、更高效。 有关使用嵌入式签名与签名目录文件的优点和缺点的详细信息,请参阅 测试对驱动程序进行签名。