如何实际处理吊销证书的验证?

托马斯·弗里德里奇

据我所知,每个证书都应该在证书链验证期间就吊销进行验证,以保护连接免受 MITM 攻击。

出于这个原因,据我所知,我应该使用 CRL/CRL deltas 或 OCSP。我是这方面的新手,但即使在阅读了一些相关的 RFC(但不是那么仔细)之后,我也不知道如何实际使用/检查撤销。

  1. 什么样的协议被广泛用作 OCSP“传输层”——我只知道 HTTP——还有其他有竞争力的替代方案,现代客户端应该支持哪些?

  2. 如果我理解正确,CA 将在每个证书中指向哪里可以找到 CRL(根 CA 除外/自签名)(在“CRL 分发点”列表中?),因此为了实现严格的客户端,我应该在证书链握手期间下载 CRL。我知道为此目的可能会使用 HTTP 和 LDAP - 是否有其他竞争替代品,现代客户端需要支持?为此目的的 LDAP 仍然很常见(或者这可能只是遗留问题)?

  3. 是否以 CRL 方式检测它的有效期,那么我可以以某种方式缓存它以进行进一步的连接吗?

  4. 是否有使用 CRL“离线”工作的实用方法?据我了解,要让它在一般情况下正常工作,我应该为世界上每个可能的 CA 下载(并更新)CRL,这将需要比“在线”更多的资源/努力。

  5. 典型的证书链有多深?例如。超过例如 10 个证书链是可能的吗?

  6. boost asio 是否以某种方式原生支持 CRL 和/或 OCSP?我需要自己做这个吗?

  7. botan 如何为证书链实施 CRL“在线”验证?也许它是开箱即用的(因为实现了 OCSP)?

  8. 这两种方法都应该支持,或者大多数 CA 都使用 OCSP 并且他们定义 CRL 仅用于旧版软件支持的原因?如果我只想连接到 95% 的服务器,那么我只需要实现 OCSP 而不关心 CRL 并拒绝使用 OCSP 无法验证的证书?或者也许对 OCSP 的支持相对较少?我发现 ocsp 支持 EV 证书,但不支持 OV 和 DV。真的吗?

  9. 也许我应该通过 OCSP 和 CRL 检查撤销。有一个“首选”就足够了,还是两个都需要?

佩德罗夫

撤销检查无法避免 MITM 攻击。

为了防止 MITM,您需要在客户端信任库中包含服务器根 CA 证书,并检查服务器证书是否由受信任的 CA(存在于您的信任库中)颁发。您还可以在信任库中包含服务器证书。在攻击者窃取证书的情况下,吊销检查可能有意义


1)什么样的协议被广泛用作OCSP“传输层”——我只知道HTTP——还有其他竞争性的替代方案,现代客户端应该支持哪些?

HTTP 和 HTTPS

2)如果我理解正确,CA 将在每个证书中指向哪里可以找到 CRL(根 CA 除外/自签名)(在“CRL 分发点”列表中?),所以为了实现严格的客户端,我应该在证书链期间下载 CRL握手。我知道为此目的可能会使用 HTTP 和 ldap - 是否还有其他有竞争力的替代方案,现代客户端需要支持哪些?为此目的的 ldap 仍然很常见(或者也许这只是遗留问题)?

HTTP 是通常的方式。但它可以是 HTTP、FTP、LDAP 或 FILE。LDAP 也用于某些环境

3) 是否以 CRL 方式检测它的有效期,那么我可以以某种方式缓存它以进行进一步的连接吗?

CRL 包含一个nextUpdate字段,指示下一个 CRL 的发布日期

4) 有没有实用的方法可以“离线”使用 CRL?据我了解,要让它在一般情况下正常工作,我应该为世界上每个可能的 CA 下载(并更新)CRL,这将需要比“在线”更多的资源/努力。

通常的方法是在需要的时候下载 CRL,缓存它,然后在下次检查时检查是否已经有了它

5) 典型的证书链有多深?例如。超过例如 10 个证书链是可能的吗?

没有限制,但通常的值是 2-4

6) boost asio 是否以某种方式原生支持 CRL 和/或 OCSP?我需要自己做这个吗?

asio的证书验证部分没有参考,所以恐怕你必须自己实现它

7) 在 botan 中如何对证书链实施 CRL“在线”验证?也许它是开箱即用的(因为实现了 OCSP)?

OCSP 是在线证书状态协议。在网络上,当他们谈论在线验证时,他们似乎指的是 OCSP,但仅支持 CRL

8) 应该支持这两种方法,或者大多数 CA 都使用 OCSP 并且他们定义 CRL 仅用于旧版软件支持的原因?如果我只想连接到 95% 的服务器,那么我只需要实现 OCSP 而不关心 CRL 并拒绝使用 OCSP 无法验证的证书?或者也许对 OCSP 的支持相对较少?我发现 ocsp 支持 EV 证书,但不支持 OV 和 DV。这是真的?

CA 通常支持 OCSP 和 CRL。你需要支持两者。即使在同一个 CA 中,也可能是必须使用 OCSP 和其他使用 CRL 检查的证书

9) 也许我应该通过 OCSP 和 CRL 检查撤销,如果两者都可用或只有一个“首选”就足够了?

OCSP 更可取,因为它速度更快并且使用的资源更少。正常的实现是对两个服务并行启动查询并使用之前的响应

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用GnuPG作吊销者后如何生成吊销证书

来自分类Dev

如何修复吊销的根证书(Windows 10)

来自分类Dev

如何吊销客户端证书

来自分类Dev

如何在Kubernetes集群中吊销签名证书?

来自分类Dev

如何在Seahorse中创建PGP密钥吊销证书

来自分类Dev

如何在Kleopatra中创建PGP密钥吊销证书

来自分类Dev

吊销APNS证书

来自分类Dev

根据Tomcat 7中的证书吊销列表验证客户端证书

来自分类Dev

NET :: ERR_CERT_REVOKED在Chrome中,当证书实际上未被吊销时

来自分类Dev

如何验证我的OpenPGP密钥吊销是否成功上传?

来自分类Dev

如何验证SAML证书?

来自分类Dev

如何验证SAML证书?

来自分类Dev

Java SSL证书吊销检查

来自分类Dev

调用SSPI失败-证书被吊销

来自分类Dev

Google.com证书被吊销

来自分类Dev

意外吊销了iOS证书?

来自分类Dev

创建吊销证书-“无密钥”

来自分类Dev

证书颁发机构-证书吊销过程

来自分类Dev

如何使用JAVA检查X509证书链的吊销状态?

来自分类Dev

如何使用Python请求库检查OCSP客户端证书吊销?

来自分类Dev

Windows 用于证书吊销(OCSP 或 CRL)的算法是什么以及如何配置它们?

来自分类Dev

Chrome-如何实际查看https证书?

来自分类Dev

SSL证书的验证方式如何?

来自分类Dev

如何验证 SSL Java 证书

来自分类Dev

因丢失私钥链而吊销证书的后果?

来自分类Dev

XCode iOS发行证书自动被吊销

来自分类Dev

您的iOS开发证书已被吊销

来自分类Dev

使用Java检查证书吊销状态

来自分类Dev

证书吊销列表和私人证书颁发机构