撤销中间 CA 时会发生什么?

信息安全 密码学 证书 公钥基础设施 证书颁发机构
2021-09-05 07:58:30

目前我正在开发一个证书管理器,它允许我们的产品安全地连接到远程 Web 服务(通过 TLS/SSL)。为了安全起见,我们使用证书撤销列表检查(或 CRL 检查)来确定某个证书是否已被撤销。不过,我还不清楚一些问题:

  • 我必须/应该获取完整链的所有 CRL 以检查证书的有效性吗?
  • 撤销中间 CA 后我该怎么办?它的所有证书是否也会添加到 CRL 中?可以用新的(不妥协的)版本替换证书吗?
3个回答

我必须/应该获取完整链的所有 CRL 以检查证书的有效性吗?

绝对地。CA 仅为其颁发的证书构建CRLCA 本身的状态必须通过颁发 CA 的 CRL 检查。注意:这是递归搜索。在编写代码或测试系统时,请记住可以有不止一个“代”颁发 CA,并检查自签名根以外的所有证书。根 CA 将没有关联的 CRL - 如果根被破坏,则必须从任何信任存储中手动删除该根。

撤销中间 CA 后我该怎么办?

不要相信CA 签署的任何内容。证书仅与颁发它的 CA 一样好。如果 CA 变得不可信,则该 CA 颁发的证书不再可信。

不要期望从被撤销的 CA 那里得到一个 CRL,说 CA 颁发的所有证书都是无效的。如果 CA 处于活动状态,这将创建一个非常大的 CRL,传输、解析和执行任何操作都会非常痛苦。此外 - 如果 CA 的密钥丢失 - 可能无法创建此 CRL。

在实践中,明智的做法是从任何信任存储中删除 CA。从信任存储中删除 CA 将导致任何从信任存储构建其 CA 链的应用程序快速无法通过证书验证。构建证书链通常在任何 OCSP/CRL 检查之前完成,因此您可以通过从存储中删除已撤销的 CA 来节省应用程序的额外步骤和潜在带宽。

中级 CA 被撤销也是一个相当大的事件——老实说,我在现实世界中从未经历过。如果我正在开发一个高度安全的系统,我也会尽可能广泛地发布 CA 被撤销的信息。特别是任何可能正在处理长期缓存的 CRL 的系统。

如果我持有这个 CA 签署的证书,我会尽快开始制定我的重新认证策略。

它的所有证书也会添加到 CRL 中吗?

不。请注意,有两种不同的 CRL 在起作用: - 颁发 CA 的 CA(根 CA 或链中的另一个 CA) - 颁发一个 CRL,用于验证颁发 CA 证书的状态 - 颁发 CA - 颁发一个 CRL它验证了这个 CA 颁发的证书的状态。

如果您有一个 CA 链,其中包含从根到最终实体的 n 个证书,那么您将涉及 n-1 个 CRL。

可以用新的(不妥协的)版本替换证书吗?

是的……有点。妥协反映了 CA 的私钥的不可信性。CA 将需要一个新的私钥,这实际上使其成为一个新的 CA。

从技术上讲,可以使用相同的专有名称重命名 CA——如果它有操作价值的话。但在实践中,我的诱惑是建立一个新的 CA 和一个新的 DN,以便所有人都清楚其中的区别。

这将是后端的主要痛苦。新 CA 的用户将需要: - 删除受损证书,并用新 CA 证书替换它 - 使用新 CA 签名的证书重新认证所有最终实体证书。

请注意,是否重新认证或重新加密最终实体是安全策略问题。如果受感染的系统无法访问任何终端实体的私钥,您可以使用新的 CA 密钥重新签署相同的私钥。如果您将证书请求存储在文件中,您可以将它们重新提交到新的 CA 并为自己节省一大堆密钥生成。

但是,在某些情况下,CA 系统可能会将一些私钥放在托管中 - 这意味着在某个中心位置(通常靠近 CA 系统),私钥会安全地存储,以防用户丢失密钥并需要更新。这在加密证书的情况下尤其普遍,因为即使在加密密钥被撤销后,您也可能需要检索加密数据。

在这些情况下,如果 CA 遭到破坏,则密钥托管被破坏的可能性很大。这意味着托管中的所有密钥用户都应生成新的密钥对并请求新的证书。

过去 - 这是一个关于是否允许重新认证的政策问题。由于新证书将具有新的有效期,因此可能是安全权力说“不更新/重新认证”,因为它们无法充分限制有效期。

是的,您应该获取链中所有证书的所有 CRL。证书可以被视为可用于任何目的,包括验证其他证书,前提是它可以插入有效证书链的末端并且已确定其撤销状态。当然,CRL 不能被信任,除非它的签名可以根据授权的公钥进行验证,这也可能意味着一些额外的证书链。

证书被撤销意味着其内容不被视为可用。撤销可以看作是对已由发行 CA 添加到证书的加密签名的“取消命令”:“这个签名不能被认为是有效的,即使它在数学上看起来不错”。您还可以将吊销视为证书有效期结束日期的替代。

如果中间 CA 证书被吊销,则它变得不可用。您不能将其用作链的一部分。因此,如果您想验证该 CA 颁发的证书之一,那么您将需要找到另一个具有相同 CA 名称和密钥且未被撤销的中间 CA 证书。

证书可能因任意原因而被吊销:最终,证书被吊销是因为负责通过发布 CRL 声明吊销状态的人这样说。证书被撤销的一个可能原因是相应的私钥被泄露(被盗)。那时,使用该密钥签名的任何内容都不再受信任,因为它可能已被密钥窃贼签名。在这种情况下(密钥泄露),不仅中间 CA 证书将被吊销,而且中间 CA 将生成新密钥,因此该中间 CA 的任何其他证书都将使用新密钥。最终结果是,之前由该中间 CA 颁发的证书将永远不会再次作为有效链的一部分出现。撤销它们是没有意义的。

  • 是的,证书只有在直到根证书的完整链都有效且未被撤销时才有效,因此您应该全部检查它们。
  • 如果一个中间 CA 被撤销,那么子证书将需要由一个有效的 CA 重新颁发,没有办法“换入”一个有效的中间证书。澄清一下:“重新颁发”是指“创建引用相同名称的全新证书”
  • 我不相信当父证书被撤销时,子证书会被放在 CRL 上。这当然是可能的,但从逻辑上讲这会很痛苦,而且我不知道有人这样做。不过,这只是我最好的猜测,在这一点上我很容易出错。