双重签名.cat文件出错“主题中没有签名”

我使用从Symantec购买的证书,使用以下命令行(sys和cat文件都使用相同的选项签名)双向签署Windows .sys和.cat文件以供驱动程序使用:

signtool.exe sign /v /ph /n "MyCorp" /ac "C:\Signing\VeriSign Class 3 Public Primary Certification Authority - G5.cer" /i "VeriSign Class 3 Code Signing 2010 CA" /t "http://timestamp.verisign.com/scripts/timstamp.dll" "MyDriver.cat"

signtool.exe sign /v /ph /n "MyCorp" /ac "C:\Signing\VeriSign Class 3 Public Primary Certification Authority - G5.cer" /i "Symantec Class 3 SHA256 Code Signing CA" /tr "http://timestamp.geotrust.com/tsa" /as /fd sha256 /td sha256 "MyDriver.cat"

Signtool.exe退出时报告成功。 当我通过右键单击签名文件来查看签名时,select“属性”,进入“数字签名”选项卡,然后看到两个签名。 sha1签名似乎很好。 当我在.sys文件中查看sha256证书的详细信息时,一切看起来都不错。 但是,当我查看.cat文件上的sha256证书的详细信息时,我看到以下错误:

在这里输入图像说明

驱动程序不会安装在configuration为相信SHA1已于2015年1月1日弃用(而不是2016年1月1日到期的实际date)的Window7框中。

我在这个msdn页面上看到一个注释:

请注意,只有.sys文件可以双重签名,因为它们是PE文件。

那个报价试图以迂回的方式说.cat文件不能被双重签名吗?

如何签署猫文件,以便他们将安装在所有版本的Windows?

似乎.cat文件不能被双重签名。 我的解决方案是使用SHA256证书签署.cat文件,但使用signtool命令行选项来创建SHA1签名。 与驱动程序相关的.sys文件仍然可以双重签名。 这似乎是在我需要的所有情况下工作。

这只是一个视觉/美容问题,或您的驱动程序安装失败?

双重签名可能更好更稳定的替代方案是安装程序,其中包含sha1和sha2签名的二进制文件,根据os版本安装正确的设置。 由于二进制文件的主要部分是相同的压缩安装程序的大小也不会增加太多。

猫文件应使用以下程序进行双重签名:

inf2cat.exe / driver: __Path__ / os: __WindowsVersions__

signtool.exe sign / v / ac __RootCert__ / t __TimeStampLink__ / sha1 __Sha1ThumbPrint__ __CatFile__

signtool.exe sign / v / ac __RootCert__ / tr __TimeStampLink__ / td sha256 / fd sha256 / as / sha1 __Sha2ThumbPrint__ __CatFile__

使用windows kit v10.x(或以上版本)的签名工具执行此操作。