博客

HTTPS 中的“S”不代表 SSL

Lori MacVittie 缩略图
洛里·麦克维蒂
2015 年 12 月 7 日发布

当我们在浏览器中看到挂锁图标时,很自然地会认为该网站正在使用 SSL 来保护我们的通信。 这显然也向消费者发出了一个信号,即该网站确实是安全的。 根据 CA 安全委员会 2015 年消费者信任调查,“仅有 3% 的人会向没有挂锁图标的网站透露自己的信用卡信息”。

其影响并不仅限于消费者。 在我们最新的应用交付状况调查中,已经实施或计划实施“SSL Everywhere”的受访者对其组织抵御应用层攻击的能力有更高的信心(在 1 到 5 的范围内得分为 3 或更高)。

图像

事实是,大多数人都无法告诉您 SSL 代表什么,更不用说描述它是如何工作的了。 然而,他们确实知道,这是一种在与应用程序或网站交互时确保交易(以及潜在的保密资料)安全的机制。

这在一定程度上是我们的(即市场)的错误。 我们使用 SSL 作为协议 ( RFC 6101 ) 的描述以及描述安全连接的通用方法。 SSL 是安全领域的创可贴、搜索引擎领域的谷歌、纸巾领域的舒洁。

事实是,HTTPS 实际上并不需要 SSL。 “HTTPS”中的“S”代表安全,只需要某种方法来保护两个端点(如浏览器和网站)之间的连接。 增加,实际上意味着通过 TLS 而不是 SSL 进行 HTTP。

这是一个重要的区别,因为尽管它们有共同的根源,但 TLS 不是 SSL,也不是 TLS。 它们是不同的协议,每个协议都有自己独特的挑战、问题和影响。 两种安全连接的方式相同 - 它们使用证书进行身份验证,使用公钥/私钥对进行加密 - 但实施差异仍然存在。

你为什么要关心? 您应该关心,因为最新的(也许是最好的,还有待观察)Web应用协议(HTTP/2 和 SPDY)不支持 SSL。 它们支持 TLS。 从本质上讲,它们并不需要它,但是支持两者的浏览器实现仅提供通过 TLS 的支持。 不是 SSL。

诚然,今天使用 HTTP/2 或 SPDY 的网站数量还不是很多,但正在增长。 假设前 1000 个网站中有 7.5% 现在通过 HTTP/2 提供内容:

摘自 W3CTech(2015 年 7 月):

新的HTTP/2标准最终版本已于 2015 年 5 月发布,目前所有网站中已有 0.4% 使用(月初为 0.24%),排名前 1,000 的网站中有 7.5% 使用。

clip_image002

现在考虑一下我们不仅仅谈论浏览器和服务器。 我们还必须考虑这对于集成意味着什么——对于来自某些排名前 1000 位的网站(如 Google)的 API 的使用,它们可能不仅强制使用 HTTP/2 或 SPDY,还强制使用 TLS。 Google 所有提供加密的公共服务均使用 TLS。 如果您正在集成 Google 的某些功能,您可能会关心他们使用的是 TLS 而不是 SSL。 因为它会对内部情况产生影响。

还要注意的是,这会产生业务影响。 根据 PCI,SSL 在 2016 年 6 月 30 日之后将不再使用。  此后,明确需要 TLS。  这意味着要做出一些改变才能保持符合 PCI 标准。当然,你必须这样做,因为如果你不遵守,就会产生很多后果。 例如,它可能导致更高的商家账户费用和信用卡发行商的罚款,或彻底撤销您处理付款和交易的能力。 如果出现违规行为,您的企业将因未能在安全方面履行尽职调查而面临更高的诉讼和罚款风险。

最后,有一个措辞非常强烈的 RFC( RFC 7568 )阐明了为什么你真的应该转向 TLS:

3。  不要使用 SSL 版本 3.0





   SSLv3 MUST NOT be used.  Negotiation of SSLv3 from any version of TLS
   MUST NOT be permitted.





   Any version of TLS is more secure than SSLv3, though the highest
   version available is preferable.

现在,假设您现在就用完并从 SSL 切换到 TLS 是不可行的。 毕竟,尽管 TLS 基于 SSL v3,但它与其前身并不是 100% 向后兼容,并且需要进行一些配置更改才能禁用 SSL 并强制使用 TLS。 配置更改通常需要重新启动。 在大型环境中,这个过程显然会造成干扰并且耗费时间。

但是现在是时候开始认真考虑您想要支持 SSL 多长时间以及何时想要切换到纯 TLS 了。