据我所知,每个证书都应该在证书链验证期间就吊销进行验证,以保护连接免受 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 仅用于旧版软件支持的原因?如果我只想连接到 95% 的服务器,那么我只需要实现 OCSP 而不关心 CRL 并拒绝使用 OCSP 无法验证的证书?或者也许对 OCSP 的支持相对较少?我发现 ocsp 支持 EV 证书,但不支持 OV 和 DV。真的吗?
也许我应该通过 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] 删除。
我来说两句