特别注意:根据行业规则并为了提升网络安全性,我们从 2020年5月31日开始,不再提供和使用 RSA/SHA-1 签名算法进行时间戳签名。

数字签名过程

为了完成软件代码签名,您需要通过哈希算法计算待签名软件的哈希值,并使用代码签名证书的私钥对其进行签名,从而得到软件的合法数字签名。在此之后,您还需要构建一个签名戳,在签名戳中同时包含上述得到的数字签名和您的代码签名证书。

数字签名不过期

用于软件签名的代码签名的证书通常会有固定的有效期,但是大多数发行的软件寿命都超过1年或者更长时间。为了避免因签名证书过期导致的软件数字签名失效,特地引入了时间戳服务。时间戳服务可在您执行代码签名时,将您代码的哈希值同时发送至证书颁发机构的服务器加盖时间戳,这样将为您保障当签名证书过期时,不用对已发行的软件代码执行重新签名。另外Microsoft Authenticode 机制也同样允许您为已经执行签名的软件代码添加时间戳,以使您的软件签名不会在证书到期时失效。

时间戳服务器

由TrustOcean 标准版代码签名、TrsutOcean EV 代码签名、Sectigo OVEV 代码签名证书均可以使用下列的地址作为时间戳服务器:

http://timestamp.sectigo.com/

时间戳协议

我们的时间戳服务器支持最常用的两种时间戳协议:

RFC 3161 时间戳

对于较为新版本的 SignTool 签名工具或其他签名程序(如 jarsigner) 可以同时使用 /tr 参数来为您的软件添加 RFC 3161 时间戳。服务器将会根据您通过参数/td指定的哈希算法自动选择签名算法(支持RSA/SHA256或RSA/SHA-384)

内核(Authenticode)时间戳

同时支持版本比较旧一点的[SingTool工具]3SignCode工具,为软件添加内核(Authenticode)时间戳签名。此协议无法让服务器自动选择签名算法,将默认采用 RSA/SHA384 作为默认的时间戳签名算法。或者,您还可以通过在时间戳服务器地址的后面增加URL参数如?td=<hash_algorith> 来手动选择其他的签名算法。比如使用下列算法选择SHA256算法: http://timestamp.sectigo.com?td=sha256

标签: 代码, 签名

本页目录: