问题 如何验证已签名代码的时间戳是否正确完成


我刚从StartSSL获得了代码签名证书,并且正在尝试签署我们的安装程序。

签名过程顺利,我得到一个安装程序exe,Windows不再抱怨来自未知的发布者。这很棒!

但是我试图确保时间戳也像宣传的那样工作,所以在我的代码签名证书到期日之后我将我的PC日期移到了2012年。

这应该没有任何区别但是当我运行相同的安装程序exe时,我现在得到同样讨厌的“未知发布者”警告。

在数字签名选项卡中查看exe的属性我可以肯定地看到今天(2010)显示的时间戳,但这似乎没有任何帮助。

谷歌搜索没有给我任何东西,除非你在时间戳字段中看到日期然后一切正常。我不敢相信,我的PC有高级约会抱怨它不行。

有谁知道这个时间戳概念是否有效以及如何确保我正确签署可执行文件?

谢谢。


10429
2018-02-06 16:32


起源

“rem”似乎有正确的答案。您可以在此处阅读有关“终身签名语义”的更多信息 download.microsoft.com/download/9/c/5/...。 - user200783
请注意Mark Berry对rem的回答的评论。它显然取决于您对StartSSL是否支持时间戳的验证级别。 - MZB


答案:


StartSSL颁发的代码签名证书包含增强型密钥用法(EKU)属性“Lifetime Signing”(1.3.6.1.4.1.311.10.3.13),这会导致文件签名在证书过期时到期,而不管任何时间戳。


8
2018-02-08 05:58



根据 这个帖子 在官方的StartCom论坛中,参考 这个比较图表,“扩展验证级别的代码签名证书支持时间戳。”所以听起来如果你购买他们的最高级别的验证(仍然相对便宜),这个问题就消失了。 Kinda有意义的是,他们希望更高的验证级别不会过期的证书。警告:我自己没有测试过。 - Mark Berry
还要注意“StartSSL扩展验证证书目前仅限于公司,商业实体,政府实体和其他合法成立的组织“ - 他们不适用于个别开发者。 - Sergey Vlasov
看起来startcom / startssl最近改变了这一点。我有一个旧证书(现已过期)有这个属性,但我几天前买了一个新的,没有它!在StartCom的论坛上也有一个帖子说。 - maf-soft


对不起,我没有给你答案,但看起来你看起来不应该看到你的行为,据说 Comodo的即时SSL常见问题解答

带有时间戳的代码在a之后有效   代码签名证书   过期?
 时间戳确保   该代码不会在到期时过期   证书到期。如果您的代码是   数字签名的时间戳是   即使证书有效也有效   过期。仅限新证书   如果你想签名是必要的   附加代码。如果你没有使用   期间的时间戳选项   签名时,您必须重新签名您的代码   并将其重新发送给您的客户。

Comodo似乎在这个问题上具有权威性,所以我倾向于相信他们所说的话。

我自己也在焦急地等待答案,因为我非常想自己从StartSSL购买代码签名证书。我在他们的网站上注意到,代码证书是'beta',所以也许这是他们需要解决问题的方法。


2
2018-02-06 21:30



StartSSL也是如此 - 我认为OP应该与他们的客户支持人员交谈,看看他们有什么要说的。 - Rob


“签名时间”和“加盖签名者”的时间戳之间存在差异。当时间戳来自“标记签名者”(证书服务器)时,签名时间是您实际签署代码的时间。

使用证书颁发者时间戳签名实际上将确保即使您的证书已过期,您的签名仍然有效。


0
2018-02-07 02:16



Windows是否会说证书已过期(对用户来说看起来很糟糕),或者Windows是否会恢复标准的“未知发布者”警告? - Dan W