Lin*_*eak -1 timestamp code-signing signtool
虽然我在Windows可执行文件上的详细SignTool(手动)命令上没有出现任何错误,但时间戳被覆盖了,我希望有多个时间戳,这可能吗?
PowerShell功能
function sign32exe([string]$arg)
{
& 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' sign /fd sha256 /a $arg
Start-Sleep -Seconds 5
& 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://timestamp.globalsign.com/?signature=sha2 /td sha256 /v $arg
Start-Sleep -Seconds 5
& 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v $arg
Start-Sleep -Seconds 5
& 'C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe' timestamp /tr http://time.certum.pl /td sha256 /v $arg
}
Run Code Online (Sandbox Code Playgroud)
我从SignTool得到了肯定的输出,但是每次调用都会覆盖时间戳(为了更好的可读性而对其进行了重组):
签名过程进行顺利:
Done Adding Additional Store
Successfully signed: .\my.exe
Run Code Online (Sandbox Code Playgroud)
紧接着是时间戳记,这些时间戳记分别没有问题:
Successfully timestamped: .\my.exe
Number of files successfully timestamped: 1
Number of errors: 0
Successfully timestamped: .\my.exe
Number of files successfully timestamped: 1
Number of errors: 0
Successfully timestamped: .\my.exe
Number of files successfully timestamped: 1
Number of errors: 0
Run Code Online (Sandbox Code Playgroud)
我拥有的证书来自Certum当局,称为标准代码签名。由于它即将过期,因此我想确保我的Windows可执行文件在我的签名证书到期后不会遇到麻烦。我认为,如果一台服务器及时不可用或服务停止,则使用更多时间戳会更好,例如,Certum授权将消失。
我理想的解决方案应该解决上述问题:
通过为多个服务器加盖时间戳;要么
通过引用一些可靠的消息来源,这是不可能的
这个问题看起来像是使用多个时间戳服务器进行代码签名的副本。
简短的答案是:不,时间戳记不能超过一次。
但是,可以使用不同的算法进行签名(双重签名),但这意味着将生成两个单独的签名,每个签名都有自己的时间戳。
实际上,多个时间戳意味着什么?时间戳记会告诉消费者资产签署的时间。签名的单个动作不可能在两个不同的时刻完成。除非应用了两个不同的签名,否则每个签名都有自己的时间戳(双签名)。
另外,让我们想象一下可以将两个时间戳应用于同一签名。假设文件在2019年1月1日签名,第一个时间戳在2/1/2019应用,第二个时间戳在3/3/2020。对验证签名的客户意味着什么?这真的没有多大意义,对吗?如果证书仍然有效,则只有后者的时间戳才是真正重要的-这就是SignTool覆盖先前时间戳的原因。
顺便说一句,通常有很多关于时间戳的文章,其中没有一篇提到为证书分配多个时间戳,例如:
归档时间: |
|
查看次数: |
275 次 |
最近记录: |