【发布时间】:2019-06-04 08:40:45
【问题描述】:
问题
虽然我的 Windows 可执行文件上的详细 SignTool (manual) 命令没有出错,但时间戳被覆盖,我希望有多个时间戳,这可能吗?
- 如果是可能,那怎么办?
- 如果它不可能,而且我只需要使用 1 个时间戳,那么从长远来看,您会推荐哪个服务器? (我现在想到了DigiCert。)
这是我尝试过的
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
}
PowerShell 输出
我从 SignTool 获得了肯定的输出,但每次调用都会覆盖时间戳(为了更好的可读性进行了重组):
签名过程顺利:
Done Adding Additional Store
Successfully signed: .\my.exe
后跟时间戳,单独使用没有问题:
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
文字图片
基本原理
我拥有的证书来自 Certum 权威机构,名为Standard Code Signing。由于它即将到期,我想确保我的 Windows 可执行文件在我的签名证书到期后不会出现问题。我认为如果一台服务器及时不可用或服务停止,更多的时间戳会更好,例如 Certum 权限会消失。
其他细节
我理想的解决方案应该解决上述问题:
通过多台服务器的时间戳;或
引用一些可靠的消息来源表明这是不可能的
【问题讨论】:
-
"由于它即将到期,我想确保我的 Windows 可执行文件在我的签名证书到期后不会出现问题。我认为如果一个服务器及时不可用或更多时间戳会更好服务停止”——我完全不明白你的意思。证书的未来到期与现有签名的时间戳有何关系?请注意,TSA 不需要参与未来的时间戳验证:en.wikipedia.org/wiki/…
标签: timestamp code-signing signtool