Jos*_*phA 23 windows sha256 authenticode verisign signtool
我们需要使用signtool.exe使用SHA1和SHA2双重签名我们的二进制文件,我们的证书支持256位SHA2.
使用Windows 8 SDK的signtool:
例如:
signtool.exe签名/ as/fd sha256/t http://timestamp.verisign.com/scripts/timstamp.dll/f"certificate.pfx"/ p XXXXXXX"file.dll"
(XXXXXXX是我们的证书密码)
因为神秘错误而失败:
SignTool错误:SignedCode :: Sign返回错误:0x80070057参数不正确.SignTool错误:尝试签名时发生错误:file.dll
在没有时间戳的情况下进行签名,单独签名为SHA1或SHA256可以正常工作,但是我们需要双重签名,并且想象没有时间戳是不行的.
我已经尝试了32位和64位版本的signtool.exe,在Win7和Win8机器上试过它,并尝试使用命令行选项,但无济于事.以前有人打过这个问题吗?
Mar*_*llo 16
我一直试图做到这一点,并发现以下做了伎俩.此方法依赖于使用两个Authenticode证书,一个用于SHA-1,另一个用于SHA-256,以确保Windows Vista和Windows Server 2008接受的文件无效,不支持由SHA-256证书签名即使使用SHA-1算法:
signtool.exe sign /sha1 SHA1_Thumprint /v /d "FileDescription" /du "CompanyURL" /fd sha1 /tr http://timestamp.comodoca.com/rfc3161 /td sha1 "FileName.dll"
signtool.exe sign /sha1 SHA256_Thumprint /as /v /d "FileDescription" /du "CompanyURL" /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 "FileName.dll"
Run Code Online (Sandbox Code Playgroud)
请注意,使用/sha1交换机为每个签名步骤显式指定SHA-1指纹,/as并用于附加 SHA-256签名.否则,SHA-256签名将覆盖SHA-1签名.
我在这个过程中发现的其他问题是只有DLL和EXE支持双重签名.MSI安装程序没有.
2015年12月29日更新:
SHA-1/SHA-256指纹的格式是40个字符的十六进制大写字符串,没有空格.例如:
signtool.exe sign /sha1 0123456789ABCDEF0123456789ABCDEF01234567 /as /v /d "FileDescription" /du "CompanyURL" /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 "FileName.dll"
Run Code Online (Sandbox Code Playgroud)
2015年12月30日更新
要使用SHA-256证书对带有SHA-1哈希的MSI文件进行签名,请使用与以下类似的命令:
signtool.exe sign /sha1 SHA256_Thumprint /v /d "FileDescription" /du "CompanyURL" /t http://timestamp.comodoca.com/authenticode "FileName.msi"
Run Code Online (Sandbox Code Playgroud)
小智 14
我知道它有点老了,但我登陆了这个帖子,也许别人也会这样.
如果先使用SHA1然后使用SHA256进行签名,它将起作用:
signtool.exe sign /f cert_file.pfx /t http://timestamp.comodoca.com/authenticode /p cert_password
signtool.exe sign /f cert_file.pfx /as /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 /p cert_password
Run Code Online (Sandbox Code Playgroud)
它在两个签名中使用相同的证书.我使用了Windows 10 SDK中的signtool,不知道它是否适用于以前的版本.
这个问题实际上更简单。
问题出在时间戳服务器上。
而不是与此一起使用signtool.exe
/t http://timestamp.comodoca.com
Run Code Online (Sandbox Code Playgroud)
您需要像这样将其用于SHA1
/tr http://timestamp.comodoca.com /td sha1
Run Code Online (Sandbox Code Playgroud)
对于SHA256
/tr http://timestamp.comodoca.com/?td=sha256 /td sha256
Run Code Online (Sandbox Code Playgroud)
小智 3
尝试使用
signtool.exe sign /as /fd sha256 /tr http://timestamp.geotrust.com /td sha256 /f certificate.pfx /p XXXXXX file.dll
Run Code Online (Sandbox Code Playgroud)
/tr 用于 RFC3161 时间戳,/td 显然用于要使用的哈希。
| 归档时间: |
|
| 查看次数: |
19453 次 |
| 最近记录: |