代码签名时间戳仍使用Timestamp服务器到期

时间:2014-10-22 18:27:15

标签: certificate code-signing

不确定原因,但是当使用赛门铁克的时间戳服务器使用代码签名时,它会设置2020年的到期日期。如果我的程序仍然过期,这将失去使用时间戳服务器的目的。

以下是使用signtool.exe验证时间戳应用程序时的输出:

Signature Index: 0 (Primary Signature)
Hash of file (sha1): A6F0CEC09F02900D7977C60A87567031D0D96C7A

    Signing Certificate Chain:
        Issued to: thawte Primary Root CA
        Issued by: thawte Primary Root CA
        Expires:   Wed Jul 16 19:59:59 2036
        SHA1 hash: 91C6D6EE3E8AC86384E548C299295C756C817B81

            Issued to: Thawte Code Signing CA - G2
            Issued by: thawte Primary Root CA
            Expires:   Fri Feb 07 19:59:59 2020
            SHA1 hash: 808D62642B7D1C4A9A83FD667F7A2A9D243FB1C7

                Issued to: My Company
                Issued by: Thawte Code Signing CA - G2
                Expires:   Tue Aug 11 19:59:59 2015
                SHA1 hash: E45B4CBFBA095DB9465F2371C161EF500201561B

    The signature is timestamped: Wed Oct 22 12:15:44 2014
    Timestamp Verified by:
        Issued to: Thawte Timestamping CA
        Issued by: Thawte Timestamping CA
        Expires:   Thu Dec 31 19:59:59 2020
        SHA1 hash: BE36A4562FB2EE05DBB3D32323ADF445084ED656

            Issued to: Symantec Time Stamping Services CA - G2
            Issued by: Thawte Timestamping CA
            Expires:   Wed Dec 30 19:59:59 2020
            SHA1 hash: 6C07453FFDDA08B83707C09B82FB3D15F35336B1

                Issued to: Symantec Time Stamping Services Signer - G4
                Issued by: Symantec Time Stamping Services CA - G2
                Expires:   Tue Dec 29 19:59:59 2020
                SHA1 hash: 65439929B67973EB192D6FF243E6767ADF0834E4


    Successfully verified: SetupGoVivoConsole.exe

    Number of files successfully Verified: 1
    Number of warnings: 0
    Number of errors: 0

请注意,此证书设置为1年到期,因此它使用Symantec提供的服务器的时间戳。根据有关此主题的(有限)文档,在签署应用程序时使用时间戳服务器应该在证书过期后消除应用程序过期。根据我上面看到的信息,情况并非如此,因为我的应用程序将在Tue Dec 29 19:59:59 2020停止运行。

我用于signtool的命令如下:

signtool.exe sign /f "certificate.pfx" /ac "thawte.crt" /p "mypassword" /t http://timestamp.verisign.com/scripts/timstamp.dll "ExecutableToSign.exe"

3 个答案:

答案 0 :(得分:3)

我可以从今天的痛苦经历中验证:过期的时间戳证书(在我的情况下,Comodo的时间戳证书)将导致Windows(7)无法通过错误0x80096005进行整体代码签名检查。

所以是的,与我所看到的所有证书提供商所说的相反,时间戳并不保证您签名的可执行文件永久有效。

使用证书查找时间戳服务。未来的到期日期为loooong。

答案 1 :(得分:3)

使用时间戳的目的不是让您的签名永久有效。其目的是将签名的使用寿命从代码签名证书有效的通常1至3年延长至10年。这足以满足大多数需求 - 他们真正认为他们的代码将通过不安全的网络(因此需要代码签名)并在10年后执行。

时间戳服务只是签署您自己的数字签名的哈希,加上当前时间(由时间戳服务提供)和时间戳服务证书,他们(希望)保护比大多数数字证书用户好很多,因此可以获得更长的保质期。虽然它们很长寿,但它们仍然只是数字证书,对于基本安全性而言,其中每一个最终都必须到期。鉴于计算机不断变得越来越强大,即使最安全的算法和当今支持的最长签名密钥最终也会变得不安全。

请注意,到期日期不过是证书(您的代码签名代码或时间戳代码)可能有效的最长时间。即使在今天,一些时间戳服务器也使用SHA-1进行签名(例如,这就是您的时间戳示例所使用的)。当该算法不再受信任时(现在它不应该太长),所有这些SHA-1时间戳将不再受信任。即使没有达到到期日,也会发生这种情况。

您应该查看其他时间戳服务。有一些将进一步过期并使用SHA256

如果有人想出一种永远不会被打破的加密,即使计算机变得更好,也会有人最终创造出永久性的#34;你要求的时间戳。不要屏住呼吸。

干杯!

答案 2 :(得分:0)

  

根据我上面看到的信息,情况并非如此,因为我的申请将于12月29日星期二19:59:59停止运作。

为什么它会停止运作?你试过吗?尝试将计算机上的日期设置为2021,看看会发生什么。就个人而言,我没有尝试过,但我的同事做了。 Windows仍将运行该程序。它将验证应用程序到签署日期。 TSA服务器证书是有效的,因此它应该不是问题。

如果您对应用程序的签名没有时间戳,那将是一个问题。签名者证书到期后,windows将无法运行该应用程序。但是当使用时间戳窗口时,并不关心TSA证书的到期日期。