Certificate 代码签名时间戳仍然使用时间戳服务器过期

Certificate 代码签名时间戳仍然使用时间戳服务器过期,certificate,code-signing,Certificate,Code Signing,不知道为什么,但当使用symantec的时间戳服务器进行代码签名时,它将过期时间设置为2020年。如果我的程序仍将过期,那么这就违背了使用时间戳服务器的目的 以下是使用signtool.exe验证时间戳应用程序时的输出: Signature Index: 0 (Primary Signature) Hash of file (sha1): A6F0CEC09F02900D7977C60A87567031D0D96C7A Signing Certificate Chain:

不知道为什么,但当使用symantec的时间戳服务器进行代码签名时,它将过期时间设置为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年,因此它使用赛门铁克提供的服务器的时间戳。根据关于这个主题的(有限的)文档,在对应用程序进行签名时使用时间戳服务器应该可以避免应用程序在证书过期后过期。根据我上面看到的信息,情况并非如此,因为我的应用程序将在2020年12月29日星期二19:59:59停止运行

我对signtool使用的命令如下:

signtool.exe签名/f“certificate.pfx”/ac“thawte.crt”/p“mypassword”/thttp://timestamp.verisign.com/scripts/timstamp.dll “ExecutableToSign.exe”

根据我上面看到的信息,情况并非如此,因为我的应用程序将在2020年12月29日星期二19:59:59停止运行

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


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

我可以从今天的痛苦经历中验证:过期的时间戳证书(在我的例子中,是Comodo的时间戳证书)将导致windows(7)无法通过整体代码签名检查,错误为0x80096005

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


寻找使用证书的时间戳服务。该服务的过期日期将在将来过期。

使用时间戳的目的不是使您的签名永远有效。其目的是将签名的使用寿命从代码签名证书通常有效的1到3年延长到10年。这对于大多数需要来说已经足够长了——他们真的认为他们的代码将在不安全的网络中运行(因此需要代码签名)并在10年后执行

时间戳服务只不过是对您自己的数字签名加上当前时间(由时间戳服务提供)与时间戳服务的证书进行哈希签名(希望如此)与大多数数字证书的用户相比,数字证书的防护性能要好得多,因此,数字证书的保质期要长得多。尽管它们存在很长时间,但它们仍然只是数字证书,为了基本的安全,它们中的每一个最终都必须过期。随着计算机功能的不断增强,即使是目前支持的最安全的算法和最长的签名密钥最终也会变得不安全

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

你应该研究其他时间戳服务。还有一些将在更远的地方过期并使用SHA256

如果有人提出了一种即使在计算机变得更好的情况下也永远不会被破坏的加密方法,那么有人最终会创建你要求的“永远”时间戳。不要屏住呼吸


干杯

感谢您的回复,但是,您能否提供一个指向说明Windows不查看时间戳服务器过期的文档的链接?Signtool使用一些
默认身份验证策略来验证应用程序的签名。我试图找到一些关于它是什么的文件,但没有运气。我得到的最接近的是和。因此,应用程序没有停止运行,但它对它进行了“取消签名”,就像程序从未被签名一样。@SamuelJackson我仍然可以在旧的.exe的属性中看到数字签名。TSA证书于2015年到期,代码签名证书也于2015年到期。据我所知,Verisign是未来最远的一个,距离不远——只有几年。你能提供这个错误是如何出现的屏幕截图吗。。。如果它可能是可捕获的?错误不是,例如,来自Windows的对话框。运行带有verify参数的signtool将清除上面列出的错误代码。使用现已过期的时间戳证书签名的可执行文件的“属性”对话框中的数字签名信息显示“其中一个副署无效。文件可能已被更改。”查看时间戳签名的详细信息时,您会看到“时间戳签名和/或证书无法验证或格式不正确。”这些可执行文件在最初生成时已验证为具有有效签名,并且证书不在CRL上。RFC 3161要求时间戳服务器证书过期:<代码>TSA签名密钥必须具有足够长的长度,以允许足够长的生命周期。即使这样做,密钥也将有一个有限的生存期。
时间戳服务器证书作为安全措施过期,因为使用的算法不是永久的“安全”。这样,人们总是在更新时间戳服务器证书