0

据我所知,应在证书链验证期间验证每个证书的吊销,以保护连接免受 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 仅由他们定义,仅出于旧版 sw 支持的原因?如果我只想连接到 95% 的服务器,那么我只需要实现 OCSP 而不关心 CRL 并拒绝使用 OCSP 无法验证的证书吗?或者也许对 OCSP 的支持相对较少?我发现 ocsp 支持 EV 证书,但不支持 OV 和 DV。真的吗?

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

4

1 回答 1

0

撤销检查无法避免 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 都使用 meybe OCSP,而 CRL 是由他们定义的,只是出于旧版 sw 支持的原因?如果我只想连接到 95% 的服务器,那么我只需要实现 OCSP 而不关心 CRL 并拒绝使用 OCSP 无法验证的证书吗?或者也许对 OCSP 的支持相对较少?我发现 ocsp 支持 EV 证书,但不支持 OV 和 DV。确实如此?

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

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

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

于 2017-03-29T14:06:19.390 回答