通过嵌入式签名对驱动程序二进制文件进行测试签名

签名的 目录文件 是正确安装和加载大多数 驱动程序包所需的全部内容。 但是,在某些情况下,可能还需要对驱动程序包中的某些二进制文件进行嵌入式签名。 嵌入式签名是指将数字签名添加到驱动程序的二进制映像文件本身,而不是依赖于目录文件中的数字签名。 因此,当驱动程序已嵌入签名时,会修改驱动程序的二进制映像。

只要驱动程序是启动-启动驱动程序,就需要对内核模式二进制文件进行嵌入式签名。 在 64 位版本的 Windows Vista 和更高版本的 Windows 中,内核模式代码签名要求规定 启动驱动程序 必须具有嵌入签名。 请注意,这是需要满足 PnP 设备安装签名要求的驱动程序包的目录文件。

目录文件一样, SignTool 用于使用测试证书在内核模式二进制文件中嵌入数字签名。 以下命令行演示如何运行 SignTool 执行以下操作:

  • 测试对 Toastpkg 示例的二进制文件的 64 位版本toaster.sys签名。 在 WDK 安装目录中,此文件位于 src\general\toaster\toastpkg\toastcd\amd64 目录中。

  • 将 PrivateCertStore 中的 Contoso.com (测试) 证书用于测试签名。 有关如何创建此证书的详细信息,请参阅 创建测试证书

  • 通过时间戳机构 (TSA) 对数字签名进行时间戳。

若要对 toaster.sys 文件进行测试签名,请运行以下命令行:

Signtool sign /v /fd sha256 /s PrivateCertStore /n Contoso.com(Test) /t http://timestamp.digicert.com amd64\toaster.sys

其中:

  • sign 命令将 SignTool 配置为对指定的目录文件进行签名,tstamd64.cat。

  • /v 选项启用详细操作,其中 SignTool 显示成功执行和警告消息。

  • /fd 选项指定用于创建文件签名的文件摘要算法。 默认值为 SHA1。

  • /s 选项指定包含测试证书的 PrivateCertStore) (证书存储的名称。

  • /n 选项指定安装在指定证书存储中的证书 (Contoso.com (Test) ) 的名称。

  • /t 选项指定将标记数字签名的 TSA (http://timestamp.digicert.com) 的 URL。

重要

如果签名者的代码签名私钥泄露,包括时间戳可为密钥吊销提供必要的信息。

  • amd64\toaster.sys 指定将嵌入签名的内核模式二进制文件的名称。

有关 SignTool 及其命令行参数的详细信息,请参阅 SignTool

有关如何使用嵌入签名测试对驱动程序签名的详细信息,请参阅 测试对驱动程序文件进行签名