⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 www.racent.com/blog/ssl-offloading-bridging-termination 「Claire」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

什么是SSL卸载?在负载均衡器层面执行SSL。

今天我们将讨论一个经常出现的问题,对于那些没有IT背景的人来说,这可能会显得特别陌生:什么是SSL卸载?我们将快速概述一下SSL卸载意味着什么,为什么你想要这样做,以及你是否应该这样做。

一般而言,有关SSL/TLS和互联网的工作方式的一个用词不当的说法是,它是一个1:1的连接。个人的计算机直接与网络服务器连接,然后通讯就会直接从一端到达另一端。而实际上,情况要比这复杂得多,有时候两端之间最多会划分成十多段。

当我们开始学习SSL卸载时,我们应当记住这一点,因为这是十分重要的。

那么,什么是SSL卸载,它是如何工作的?

让我们开始吧……

什么是SSL卸载?

坦白地说,在TLS 1.3之前,甚至在TLS 1.2之前,SSL/TLS经常会增加连接的延迟性。这就是SSL/TLS减慢网站速度的原因。十年前,SSL/TLS的这一缺点总是令人倍感震惊。“哦,它们会拖慢你的网站的速度”。当时这的确是真的。

今天情况不再是这样了,但在过去,人们会SSL/TLS认为有点资源匮乏。首先,你会进行SSL/TLS握手。在TLS 1.3中,系统已经被改进到只进行一次往返,但在此之前,它会进行多次往返。然后,在握手之后,必须使用额外的处理能力来对传输的数据进行加密和解密。随着服务器上来自SSL/TLS的额外负载不断增加,系统便不能再满负荷处理。

再一次地,TLS 1.3删除了很多这方面的内容,HTTP/2——它需要使用SSL/TLS——能够帮助进一步提高性能,但是,即使有了所有这些方面的改进,在更高流量的情况下,SSL/TLS仍旧可能会增加延迟。

那么,什么是SSL卸载?嗯,为了帮助缓解SSL/TLS增加的额外负担,你可以启动单独的、特定于应用程序的集成电路(ASIC)处理器,这些处理器仅限于执行SSL/TLS所需的功能,即握手和加密/解密。这将可以为目的应用程序或网站释放出处理能力。简言之,这就是SSL卸载。有时也称为负载均衡。你可能听说过负载均衡器这个词。负载均衡器是这样一种设备,它能够帮助改善对多个资源的工作负载的分发,例如将SSL/TLS工作负载分发到ASIC处理器。

SSL卸载的优点是什么?

SSL卸载有几个好处:

  • 它能够卸载应用服务器上额外的任务,这样它们就可以专注于它们的主要功能。
  • 它能够节省这些应用服务器上的资源。
  • 而且,根据使用的负载均衡器的不同,它还可以帮助进行HTTPS检查、反向代理、cookie持久性、流量管理等等。

最后一点是最重要的一点:在某些情况下,SSL卸载可以帮助进行流量检查。与加密一样重要的是,它有一个主要缺点:攻击者可以隐藏在加密的通信流中。由于攻击者隐藏在HTTPS通信流中,所以出现了很多引人注目的漏洞,最近,Magecart就一直在使用HTTPS通信来混淆从各种支付页面中窃取的PCI。

一旦你的组织达到了一定的规模,检查HTTPS通信的能力就几乎成为强制性的了,而实现这一点的最好方法之一就是,卸载SSL/TLS进程。

SSL卸载的工作原理是什么?

当我们讨论SSL卸载时,有两种不同的方式可以实现它:

  • SSL终结
  • SSL桥接

让我们先从SSL终结开始,因为它更简单一点。从本质上来说,它是这样工作的,用于SSL卸载的代理服务器或负载均衡器充当着SSL终结器的角色,它也充当边缘设备的角色。当客户端尝试连接到网站时,客户端就会连接到SSL终结器——该连接是HTTPS。但是SSL终结器和应用服务器之间的连接是通过HTTP连接的。

现在,你可能会问,这为什么没给对浏览器造成问题,这是因为HTTP连接是在幕后进行的——在内部网络上,受防火墙保护——客户端与SSL终结器之间仍然有一个安全的连接,而后者起着传递的作用。

下面是SSL终止的可视化图:

除了通过HTTP发送流量和请求外,SSL桥接在概念上与SSL终结非常相似,它会在将所有内容发送到应用程序服务器之前,重新加密它们。

下面是SSL桥接的可视化图:

这两种方法都允许你执行流量检查,并且在处理更大网络上的大量流量时可以提供极大的帮助。

请记住,加密是一项令人难以置信的CPU密集型任务。当行业从1024位的RSA密钥迁移到了2048位的RSA密钥时,根据服务器的不同,涉及到的CPU的使用增加了4-7倍。我们甚至可能永远不会获得4096位的密钥,因为坦率地说,那时,CUP使用量的增加并不能完全改善安全性。这就是为什么我们看到加密的发展趋势更倾向于基于椭圆曲线的密码系统。

因此,让我们来讨论最后一点:你是否应该考虑SSL卸载?

坦率地说,这一切都取决于你,你的网站和你想做什么。像ESPN或CNN这样大型的媒体网站应当非常适合使用负载均衡器,因为它们都能处理大量的流量。另一方面,如果你只是为当地一家面包店运营一个网站,那么让你的服务器去处理所有的事情就可以了——尤其是TLS 1.3进行了改进的情况下。

文章目录
  1. 1. 什么是SSL卸载?在负载均衡器层面执行SSL。
  • 什么是SSL卸载?
  • SSL卸载的优点是什么?
  • SSL卸载的工作原理是什么?
    1. 1. 因此,让我们来讨论最后一点:你是否应该考虑SSL卸载?