我只是想知道为什么 LDAP with STARTTLS 是比 LDAPS 更受欢迎的行业标准。 LDAPS 首先使用加密信息开始通信,而 STARTTLS 仅在身份验证成功后才升级到加密连接。
答案1
我只是想知道为什么 LDAP with STARTTLS 是比 LDAPS 更受欢迎的行业标准。
事实上并非如此。目前关于 STARTTLS 的最佳实践是,根据RFC8314:
简而言之,本备忘录现在建议:
[...]
o 使用“隐式 TLS”(如下定义)连接到邮件提交服务器和邮件访问服务器,而不是连接到“明文”端口并协商 TLS使用 STARTTLS 命令或类似命令。
原因在最后解释了——https://www.rfc-editor.org/rfc/rfc8314#appendix-A:
尽管 STARTTLS 看起来只比单独端口 TLS 稍微复杂一点,但我们再次从 STARTTLS 命令注入漏洞(计算机紧急准备小组 (CERT) 漏洞 ID #555316 [CERT-555316] 的形式)中学到了复杂性是安全性的敌人的教训。 ])。尽管 STARTTLS 本质上没有任何问题,但它导致了常见的实现错误(由多个实现者独立执行),这一事实表明它是一种不如隐式 TLS 安全的架构。
是的,此 RFC 讨论的是电子邮件而不是 LDAP,但电子邮件是 STARTTLS 发明的协议,因此此 RFC 绝对与支持 STARTTLS 的任何协议(包括 LDAP)相关。
据我所知,这没有进入任何(新的)LDAP RFC 的不幸原因很简单:还没有人打扰。更糟糕的是,人们喜欢引用这句古老的话OpenLDAP 常见问题解答文章建议使用 STARTTLS 而不是 LDAPS,但不幸的是,我们没有意识到 OpenLDAP FAQ 多年来一直无人维护、过时且错误。
LDAP+STARTTLS 与电子邮件+STARTTLS 相比的另一个缺点是:电子邮件协议的设计方式是,服务器可以通过在协商加密之前不公布身份验证支持来防止配置错误的客户端通过明文发送身份验证数据。 LDAP 协议不是这样设计的,因此支持 STARTTLS 的 LDAP 服务器绝对无法阻止配置错误的客户端通过未加密的连接发送身份验证数据。
如果您想了解最新信息,搜索 OpenLDAP 邮件列表相反,关于 STARTTLS,尤其是这个线。
答案2
STARTTLS 仅在身份验证成功后升级为加密连接
你确定吗?对于 SMTP,首先启动 TLS,并通过加密连接执行身份验证。这建议 LDAP 的工作方式相同:
此值会为任何需要 STARTTLS 加密的服务器端流量激活 STARTTLS 加密。在这种情况下,BIG-IP 系统在成功连接时激活 STARTTLS。
一般而言,关于 STARTTLS:
我只是想知道为什么 LDAP with STARTTLS 是比 LDAPS 更受欢迎的行业标准。
使用 STARTTLS 而不是始终使用加密连接的一些原因:
- 不支持 STARTTLS 的客户端仍然可以连接并接收协议有效错误,并向用户显示该错误。不支持加密的客户端将根本无法连接到 LDAPS 服务器。这意味着当需要 TLS 时,STARTTLS 可以提供更好的诊断。
- 当需要 TLS 并且客户端支持它但握手由于某种原因失败时,STARTTLS 还可以提供更好的诊断。
- STARTTLS 可以是可选的。如果是这样,一个端口就会同时为加密和纯文本客户端提供服务。使用 LDAPS 时,客户端必须获得正确的端口,否则连接会失败。