SSL证书服务器时间戳是什么?TSA在代码签名中的作用是什么?
TSA(Time Stamping Authority)经常和 SSL 证书有效期问题一起被讨论,但两者解决的问题并不一样。
HTTPS 网站证书主要用于建立 TLS 信任,而 TSA 更多应用于代码签名和长期验证场景。
很多用户看到“证书时间戳”这个词,会误认为 SSL 证书也需要像代码签名一样添加 TSA。实际上,网站 HTTPS 和代码签名面对的是两套不同的验证场景。了解两者的区别,有助于我们在不同业务场景中正确选择和配置数字证书。
一:为什么网站 HTTPS 证书不使用时间戳?
对于面向 Web 浏览器的 HTTPS 证书(如 DV、OV、EV 证书),浏览器在进行 TLS 握手时,主要依靠实时在线的 OCSP(在线证书状态协议)或 CRL(证书吊销列表)来检查证书当前的有效状态。
普通网站 SSL 证书在日常访问中并不直接依赖 TSA 服务。TSA 在数字证书体系中扮演核心角色的场景,是代码签名和文档数字签名。
| 项目 | SSL证书 | TSA时间戳 |
|---|---|---|
| 用途 | HTTPS加密传输与身份验证 | 证明代码或数据在特定时间点已存在 |
| 使用对象 | 网站服务器与 Web 应用 | 软件程序、驱动、文档等数字签名 |
| 是否依赖浏览器 | 是(实时在线验证/OCSP) | 否(离线时间戳校验) |
关于证书体系的基础定义,可以参考 什么是SSL证书?。
二:代码签名中为什么要添加时间戳(TSA)?
开发者在发布软件、驱动程序或 App 时,需要使用代码签名证书。如果不添加时间戳,证书到期后会出现历史签名无法验证的问题。
在实际业务中经常遇到这类情况:Windows 软件发布后,开发者发现代码签名证书过期,用户安装时报发布者无法验证。重新签发证书无法解决旧版本软件问题,原因就是缺少时间戳。而在打包签名时向可信的 TSA 服务器申请并嵌入时间戳,操作系统在校验软件签名时,会检查签名生成时的那个时间点。只要当时证书处于有效期内,即使几年后证书本身过期了,该历史签名依然有效。
如果开发人员在打包签名时遇到签名工具报错或无法连接时间戳服务器,可参考 修复SSL证书错误 进行排查。
三:时间戳服务的工作过程与技术标准
标准的 TSA 授时服务基于 RFC 3161 标准:
- 客户端对需要签名的文件计算出哈希摘要,并将摘要发送给受信任的 TSA 服务端。
- TSA 对文件摘要和时间信息进行数字签名,生成符合标准的加密时间戳令牌返回给客户端。
- 时间戳服务器由可信机构运营,其私钥受到硬件安全模块(HSM)的保护,确保时间数据在传输和存储中不被篡改。
企业在采购或配置相关安全证书时,可以参考 SSL证书选购指南 了解各类证书的适用边界。
四:实际开发与打包中的配置方式
在实际进行代码签名(如使用 signtool 工具)时,需要在命令中显式指定受信任的官方 TSA 地址:
signtool sign /f my_cert.pfx /p password /tr http://timestamp.digicert.com /td sha256 /sha1 THUMBPRINT app.exe
通过这种方式,生成的二进制文件将永久绑定可信时间。关于不同证书类型的详细标准,可以查看 SSL证书类型。
FAQ 常见问题解答
Q:普通的网站 HTTPS 证书需要配置时间戳服务吗?
A:不需要。网站 HTTPS 证书的有效性由浏览器的实时在线 OCSP 校验决定,不需要也在 Nginx 或 Apache 中配置 TSA 时间戳。
Q:SSL证书有效期过期后,还需要 TSA 保证继续有效吗?
A:不需要。TLS 证书和代码签名证书的验证机制不同。网站证书过期后,浏览器会直接认为证书无效,TSA 无法延长 SSL 证书有效期。
Q:如果代码签名时没有加时间戳会怎么样?
A:一旦代码签名证书到期,所有之前已经发布并带旧签名的软件,在用户电脑上再次安装时都会被系统判定为证书过期,从而弹出安全警告阻拦用户。



京公网安备11010502031690号
网站经营企业工商营业执照
















