如果在未更新的情况下达到其 Not-Valid-After 日期,SSL 证书是否会自动吊销?

信息安全 证书 x.509 证书吊销 ocsp
2021-08-25 21:56:04

我正在了解用于对 https 端点进行客户端证书身份验证的 X509 证书。如果我有一个 OCSP 检查器(创建、提交、解码 OCSP 响应的 Python 脚本),我是否需要检查客户端证书上的无效日期?

例子:

  • 客户端向我的 https 端点发出请求
  • 我检查客户端的证书 CA 的 OCSP 端点以查看证书是否已被吊销
  • 我是否还需要检查客户端证书日期,或者如果已达到无效后日期,OCSP 是否会立即吊销?
4个回答

不,撤销是一个主动事件,而不是被动或自动发生的事情。不过,过期是被动的。过期的证书不再有效,因此无需将其粘贴在 CRL 中或更新 OCSP。

如果您的检查器的目的只是解析 OCSP,那么不,您不需要检查证书上的日期,因为这不是 OCSP 的一部分。如果您的检查器的目的是回答“此证书有效吗?”的问题,那么您绝对需要检查有效日期(开始和结束)。

编辑:正如eckes 指出的那样,对于您的典型客户端标识或服务器标识证书(或任何其他不用于长期签名的证书),一旦过期,您实际上可以将其撤销列表中删除,这有助于减小它们的大小.

您必须先检查到期日期。您可以在本地执行此操作,而无需创建与 OCSP 服务器的连接并在您的端和 OCSP 服务器端花费网络资源。(是的,我经常处理过载的 OCSP 服务器。)

不,过期的证书不会自动撤销。在很多情况下(如处理带时间戳的签名),重要的是要知道证书在签名创建的那一刻是否有效,即使它现在已经过期和/或撤销。这就是为什么向 OCSP 询问过期证书本身是一个有效的操作,但服务器可能会回答即使证书过期也不会被撤销。

像这样想。你去杂货店买牛奶。你会检查牛奶的召回,看看牛奶是否过期?不!您只需检查到期日期。您知道它仅在到期日到期。证书也是如此。您应该检查日期以查看它是否已过期。如果它还没有过期,那么您可以查看它是否被提前撤销。

(这不是最好的比喻,因为购物者不会检查召回,但我认为这有助于说明这一点。)

TL; DR 我会说是的,过期的证书被认为是隐式撤销的,尽管这当然依赖于加密库在验证证书时正确地进行过期检查。


RFC 5280(X.509 和 CRL)第 5 节(强调我的):

完整且完整的 CRL 列出了 CA 颁发的所有未过期的证书,这些证书已因任何原因被吊销。

还有RFC 6960 (OCSP) 第 4.4.4 节(强调我的):

OCSP 响应者可以选择在证书过期后保留撤销信息。

因此,一旦证书达到其 Not-After 日期(即“证书已过期”),您实际上就无法撤销它,因为将过期证书放在 CRL 上是非法的。

对于 OCSP,响应者可以使用以下代码之一进行响应:

   CertStatus ::= CHOICE {
       good        [0]     IMPLICIT NULL,
       revoked     [1]     IMPLICIT RevokedInfo,
       unknown     [2]     IMPLICIT UnknownInfo }

OCSP 软件可能允许您继续跟踪过期的证书,但大多数 OCSP 响应者可能会unknown在证书达到其 Not-After 日期后开始提供。