据我所知,应在证书链验证期间验证每个证书的吊销,以保护连接免受 MITM 攻击。
据我了解,出于这个原因,我应该使用 CRL/CRL deltas 或 OCSP。我是这个领域的新手,但即使在阅读了一些相关的 RFC(但不是那么仔细)之后,我也不知道如何实际使用/检查撤销。
什么样的协议被广泛用作 OCSP“传输层”——我只知道 HTTP——还有其他有竞争力的替代方案,现代客户端应该支持哪些?
如果我理解正确,CA 将在每个证书中指向可以找到 CRL 的位置(根 CA / 自签名除外)(在“CRL 分发点”列表中?),所以要实现严格的客户端,我应该在证书链握手期间下载 CRL。我知道可以为此目的使用 HTTP 和 LDAP - 还有其他有竞争力的替代方案,现代客户端需要支持吗?用于此目的的 LDAP 仍然很常见(或者这可能只是遗留问题)?
是否以 CRL 方式检测它的有效期,所以我可以以某种方式缓存它以进行进一步的连接吗?
是否有实用的方法可以使用 CRL“离线”工作?据我了解,要让它正常工作,我应该为世界上每个可能的 CA 下载(和更新)CRL,这比“在线”这样做需要更多的资源/努力。
典型的证书链有多深?例如。例如,链中可能有超过 10 个证书?
boost asio 是否以某种方式原生支持 CRL 和/或 OCSP?我需要自己做这个吗?
botan 如何为证书链实施 CRL“在线”验证?也许它是开箱即用的(因为实施了 OCSP)?
这两种方法都应该支持,或者大多数 CA 使用 OCSP 并且 CRL 仅由他们定义,仅出于旧版 sw 支持的原因?如果我只想连接到 95% 的服务器,那么我只需要实现 OCSP 而不关心 CRL 并拒绝使用 OCSP 无法验证的证书吗?或者也许对 OCSP 的支持相对较少?我发现 ocsp 支持 EV 证书,但不支持 OV 和 DV。真的吗?
也许我应该通过 OCSP 和 CRL 检查撤销。一个“首选”可用就足够了,还是我都需要?