我读过 SSL 是“点对点”安全性而非“端到端”安全性的一个很好的解决方案。例如,在JavaWorld 的这篇文章中,它说:
SSL/TLS 根本就不是为这种情况设计的;SSL/TLS 仅处理点对点安全性…… SSL/TLS 可以保护任何两个 [中介] 之间的路径,但不能保护从一端到另一端的路径。
我正在构建一个 Web 服务来向单独的客户端提供数据,如这个 Programmers.SE question 中所述。我对在该上下文中实现 SSL 的理解是,我可以向所有 Web 服务调用添加某种 API 密钥,并在该服务上强制仅使用 HTTPS,而且我已经达到了所需的安全水平(我没有通过任何特定于用户的内容,但在某些情况下用户明确并由用户发起的电子邮件地址除外)。但是这个声明和这篇文章似乎在争论这一点。这是否表明 SSL 连接上仍然可能存在中间人攻击?OAuth 指南在此声明(“超越基本”下的第二段):
HTTPS 是防止中间人攻击 (MITM)、窃听和其他安全风险的推荐解决方案。
这是如何调和的?
再去看看文章。
它正在谈论的是数据中继 - 在这种情况下,客户端与您的服务器(通过 SSL)对话,您的服务器通过 SSL 与另一个服务对话。虽然从客户端发送的信息是用于其他服务的,但此模型要求您的服务器对其具有可见性 - 在此体系结构中,您是中间人。客户端看不到其他服务器的凭据。两个连接都是安全的。
这篇文章是关于将数据隧道传输到远程站点,同时维护客户端和“其他服务器”之间的信任关系 - 但最终如果其他服务器将数据发送到别处,那么系统的完整性就会失败 - 就像如果你失败一样不要在三节点模型中的两个连接中的任何一个上使用 SSL。