时间戳记最佳实践

代码签名为您的可执行文件提供了完整性,确保它们没有被修改或破坏。许多现代操作系统都需要代码签名,以保护其用户免受未知来源或真实性保证的代码的侵害。

HTTPS相似,由证书颁发机构创建的受信任证书会颁发给个人或公司,以允许他们签名将被主要操作系统识别的代码。

代码签名最重要的部分之一就是时间戳。这是签名过程的一部分,该过程使软件和用户即使在证书过期后也可以识别有效的代码签名。

如果您的软件由于代码签名证书过期而停止运行,请考虑将对用户造成的影响以及如何对其进行修复。您是否可以推送更新,或者由于过期的签名,该机制也会被破坏?在紧急情况下开发和部署补丁需要多少费用?如果您的软件停止运行,您的用户会遭受自己的业务影响吗?

由于过期签名的影响很大,因此,良好地理解和记录代码签名过程以及始终为软件签名以保留签名非常重要。

带有时间戳记不仅是确保软件持续可用性的最佳做法,而且还提供了安全性好处。如果由于密钥泄露而需要吊销证书,则吊销日期之前签名的所有内容将继续起作用,并且任何新的签名均将无效。

我们将介绍时间戳记和最佳实践的背景,以确保您永远不会在软件签名中遇到任何意外问题。

什么是时间戳记?

带有时间戳记可将您的软件签名保留下来,以便在代码签名证书过期后,操作系统和其他软件可以接受该签名。在评估签名时,时间戳允许对照签名的时间(而不是执行软件的当前时间)来检查签名的有效性。

没有时间戳,签名将根据当前日期进行评估。您可能已经在几年前发布了软件,在这种情况下,您的证书将过期并且签名将不再有效。这将阻止用户运行您的软件,并且视平台而定,可能无法绕开它。

例如,您的代码签名证书在整个2017年(201711日至20171231日)有效,并且您在201711月对可执行文件进行了签名并加了时间戳。用户下载了可执行文件并立即运行他们的操作系统会检查时间戳并评估它是否在11月有效,而不是检查代码签名证书当前是否有效。它看到证书然后是有效的,并且签名被接受。

请注意,每次用户运行可执行文件时,都会对其进行签名检查。这意味着,如果您的证书过期且没有时间戳记,则该软件将突然对所有用户停止工作。

对于大多数软件,您将其分发给用户并希望其能尽可能长时间地工作这使时间戳记成为签名过程中必不可少的一部分,以便您的软件可以继续使用多年。

时间戳本身已由您的CA签名并受到保护,使其不受篡改或欺骗的影响,并且具有加密安全性。将时间戳记视为反签名。

Windows上,如果提供您的代码签名证书的CA不可信,则时间戳还可以使您的签名保持有效。

最佳实践

  1. 首先也是最重要的:使用时间戳记!在许多工具(例如MicrosoftSignTool)中,时间戳是可选的。确保您了解时间戳记如何与您的开发工具一起使用。我们提供最流行环境的文档,包括WindowsMac OSJava

  2. 检查平台支持:SHA-2是用于标记签名的现代标准算法。但是,某些仍在使用的操作系统默认情况下不支持SHA-2-Windows 7仅支持带有修补程序的SHA-2。如果您认为较旧的操作系统在用户中很受欢迎,请考虑是否应使用SHA-1签名或带有两个证书的双重签名来支持这两种算法。

  3. 使之成为构建过程的一部分:更新软件时,将构建并发布新的可执行文件。确保签名和时间戳是该过程的一部分,以避免每个软件版本出现意外问题和错误。

  4. 记录过程:您比其他人更了解您的开发工具和过程。时间戳在签名过程中需要其他标志和命令,包括URL以便从CA安全地检索时间戳签名。确保人员或程序上的更改不会导致有人忘记正确签名您的软件。

  5. 限制密钥泄露的损害:时间戳记为操作系统提供了一种方法,用于识别是在证书吊销之前还是之后签发了签名的可执行文件。如果由于密钥泄露而需要吊销证书,则可以放心地这样做,而不会给您加盖时间戳的合法签名失效。将根据撤销日期检查时间戳记,并且在该日期之前发出的所有内容将继续有效。

证书过期的重要性

一个普遍的误解是,证书到期仅是证书颁发机构向您收取更多钱的机会。从技术角度来看,证书有效期是使系统正常运行所必需的PKI的基本部分,尤其是对于Web PKI而言,其中有多个独立的参与者正在交互。

PKI的主要目的之一是将身份(例如域名,组织或其他唯一标识符)绑定到公钥。使用任何类型的受信任证书,都会验证该身份以确保准确性。这使您(以及您使用的软件)有信心知道发给DigiCert.com/DigiCertInc.的证书确实归我们所有。对于代码签名,SSL和电子邮件证书,这是正确的。

例如,在您可以收到Software Developers LLC的代码签名证书之前,您的CA供应商必须确保该公司确实存在,已正确注册并在您当地政府中享有良好信誉,并且您确实是该公司的雇员,有权申请证书。

到期是CA重新检查此信息以确保身份和公钥之间的绑定仍然正确的机会。这样,应该将受信任的证书视为类似于护照或驾驶执照的身份证明文件,该文件也将过期。签发您这些文件的政府希望偶尔能够确保信息仍然准确,并且您仍然有权使用和获取该文件。

如果没有过期,证书将无限期起作用,从而使密钥背后的身份随着年龄的增长而变得可疑。公司和域名易手,可以重新注册,并且拥有这些证书的员工会离开。您是否相信颁发该证书的人仍拥有2010年颁发的证书?2000年颁发的证书怎么样?

吊销是一种附加机制,可以指示何时不应再信任证书,但是由于多种原因(包括性能,客户端软件中缺少吊销状态检查以及可用性),无法将吊销作为主要原因。证书无效的方法。

证书到期还有其他多种原因-如果证书被盗用,可以确保在有限的时间范围内恶意使用该证书,并提供了使用新密钥对重新加密证书的机会(最佳做法),并升级到当前的加密方法,例如新的签名算法或更强的密钥。