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

时间:2010-02-06 16:32:08

标签: code-signing signing trusted-timestamp

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

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

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

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

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

除了如果你在时间戳字段中看到日期,那么谷歌搜索没有给我任何东西,那么一切都没问题。我无法相信这一点,我的PC有高级约会抱怨它不行。

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

感谢。

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

很抱歉,我没有给你一个答案,但根据Comodo's Instant SSL FAQ,你看起来确实不应该看到你的行为。

  

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

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

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

答案 2 :(得分:0)

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

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