我使用从Symantec购买的证书使用以下命令行对驱动程序的Windows .sys和.cat文件进行双重签名(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在退出时报告成功。当我通过右键单击签名文件来查看签名时,选择“属性”,转到“数字签名”选项卡,然后我会看到两个签名。 sha1签名似乎很好。当我在.sys文件上查看sha256证书的详细信息时,一切看起来都不错。但是,当我在.cat文件中查看sha256证书的详细信息时,我看到以下错误:
驱动程序不会安装在我配置为相信SHA1于2015年1月1日弃用的Window7框中(而不是2016年1月1日到期时的实际日期)。
我在msdn page上看到了一条说明:
请注意,只有.sys文件可以双重签名,因为它们是PE 文件。
该引言是否试图以迂回的方式说.cat文件不能双重签名?
如何对cat文件进行签名,以便它们安装在所有版本的Windows上?
答案 0 :(得分:3)
看起来.cat文件似乎不能双重签名。 我的解决方案是使用SHA256证书签署.cat文件,但使用signtool命令行选项来创建SHA1签名。 与驱动程序关联的.sys文件我仍然能够双重签名。 这似乎适用于我需要的所有场景。
答案 1 :(得分:0)
这只是视觉/装饰问题还是您的驱动程序安装失败?
双签名可能更好,更可靠的替代方案是包含sha1和sha2签名二进制文件的安装程序,它根据操作系统版本安装正确的集合。由于二进制文件的主要部分相同,因此压缩的安装程序大小也不会增加太多。
答案 2 :(得分:0)
cat文件应使用以下过程进行双重签名:
inf2cat.exe / driver: __ Path __ / os: __ WindowsVersions __
signtool.exe签名/ v / ac __ RootCert __ / t __ TimeStampLink __ / sha1 __ Sha1ThumbPrint __ __ CatFile __
signtool.exe签名/ v / ac __ RootCert __ / tr __ TimeStampLink __ / td sha256 / fd sha256 / as / sha1 __ Sha2ThumbPrint __ __ CatFile __
使用Windows工具包v10.x(或更高版本)中的签名工具执行此操作。