面試官:什么是SSL卸載?它的工作原理是什么?有什么好處?
點(diǎn)擊上方“服務(wù)端思維”,選擇“設(shè)為星標(biāo)”
回復(fù)”669“獲取獨(dú)家整理的精選資料集
回復(fù)”加群“加入全國(guó)服務(wù)端高端社群「后端圈」
什么是SSL卸載?在負(fù)載均衡器層面執(zhí)行SSL。
今天我們將討論一個(gè)經(jīng)常出現(xiàn)的問(wèn)題,對(duì)于那些沒(méi)有IT背景的人來(lái)說(shuō),這可能會(huì)顯得特別陌生:什么是SSL卸載?我們將快速概述一下SSL卸載意味著什么,為什么你想要這樣做,以及你是否應(yīng)該這樣做。
一般而言,有關(guān)SSL/TLS和互聯(lián)網(wǎng)的工作方式的一個(gè)用詞不當(dāng)?shù)恼f(shuō)法是,它是一個(gè)1:1的連接。個(gè)人的計(jì)算機(jī)直接與網(wǎng)絡(luò)服務(wù)器連接,然后通訊就會(huì)直接從一端到達(dá)另一端。而實(shí)際上,情況要比這復(fù)雜得多,有時(shí)候兩端之間最多會(huì)劃分成十多段。
當(dāng)我們開(kāi)始學(xué)習(xí)SSL卸載時(shí),我們應(yīng)當(dāng)記住這一點(diǎn),因?yàn)檫@是十分重要的。
那么,什么是SSL卸載,它是如何工作的?
讓我們開(kāi)始吧……
什么是SSL卸載?
坦白地說(shuō),在TLS 1.3之前,甚至在TLS 1.2之前,SSL/TLS經(jīng)常會(huì)增加連接的延遲性。這就是SSL/TLS減慢網(wǎng)站速度的原因。十年前,SSL/TLS的這一缺點(diǎn)總是令人倍感震驚?!芭?,它們會(huì)拖慢你的網(wǎng)站的速度”。當(dāng)時(shí)這的確是真的。

今天情況不再是這樣了,但在過(guò)去,人們會(huì)SSL/TLS認(rèn)為有點(diǎn)資源匱乏。首先,你會(huì)進(jìn)行SSL/TLS握手。在TLS 1.3中,系統(tǒng)已經(jīng)被改進(jìn)到只進(jìn)行一次往返,但在此之前,它會(huì)進(jìn)行多次往返。然后,在握手之后,必須使用額外的處理能力來(lái)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密和解密。隨著服務(wù)器上來(lái)自SSL/TLS的額外負(fù)載不斷增加,系統(tǒng)便不能再滿負(fù)荷處理。
再一次地,TLS 1.3刪除了很多這方面的內(nèi)容,HTTP/2——它需要使用SSL/TLS——能夠幫助進(jìn)一步提高性能,但是,即使有了所有這些方面的改進(jìn),在更高流量的情況下,SSL/TLS仍舊可能會(huì)增加延遲。
那么,什么是SSL卸載?嗯,為了幫助緩解SSL/TLS增加的額外負(fù)擔(dān),你可以啟動(dòng)單獨(dú)的、特定于應(yīng)用程序的集成電路(ASIC)處理器,這些處理器僅限于執(zhí)行SSL/TLS所需的功能,即握手和加密/解密。這將可以為目的應(yīng)用程序或網(wǎng)站釋放出處理能力。簡(jiǎn)言之,這就是SSL卸載。有時(shí)也稱為負(fù)載均衡。你可能聽(tīng)說(shuō)過(guò)負(fù)載均衡器這個(gè)詞。負(fù)載均衡器是這樣一種設(shè)備,它能夠幫助改善對(duì)多個(gè)資源的工作負(fù)載的分發(fā),例如將SSL/TLS工作負(fù)載分發(fā)到ASIC處理器。
SSL卸載的優(yōu)點(diǎn)是什么?
SSL卸載有幾個(gè)好處:
它能夠卸載應(yīng)用服務(wù)器上額外的任務(wù),這樣它們就可以專注于它們的主要功能。 它能夠節(jié)省這些應(yīng)用服務(wù)器上的資源。 而且,根據(jù)使用的負(fù)載均衡器的不同,它還可以幫助進(jìn)行HTTPS檢查、反向代理、cookie持久性、流量管理等等。
最后一點(diǎn)是最重要的一點(diǎn):在某些情況下,SSL卸載可以幫助進(jìn)行流量檢查。與加密一樣重要的是,它有一個(gè)主要缺點(diǎn):攻擊者可以隱藏在加密的通信流中。由于攻擊者隱藏在HTTPS通信流中,所以出現(xiàn)了很多引人注目的漏洞,最近,Magecart就一直在使用HTTPS通信來(lái)混淆從各種支付頁(yè)面中竊取的PCI。

一旦你的組織達(dá)到了一定的規(guī)模,檢查HTTPS通信的能力就幾乎成為強(qiáng)制性的了,而實(shí)現(xiàn)這一點(diǎn)的最好方法之一就是,卸載SSL/TLS進(jìn)程。
SSL卸載的工作原理是什么?
當(dāng)我們討論SSL卸載時(shí),有兩種不同的方式可以實(shí)現(xiàn)它:
SSL終結(jié) SSL橋接
讓我們先從SSL終結(jié)開(kāi)始,因?yàn)樗?jiǎn)單一點(diǎn)。從本質(zhì)上來(lái)說(shuō),它是這樣工作的,用于SSL卸載的代理服務(wù)器或負(fù)載均衡器充當(dāng)著SSL終結(jié)器的角色,它也充當(dāng)邊緣設(shè)備的角色。當(dāng)客戶端嘗試連接到網(wǎng)站時(shí),客戶端就會(huì)連接到SSL終結(jié)器——該連接是HTTPS。但是SSL終結(jié)器和應(yīng)用服務(wù)器之間的連接是通過(guò)HTTP連接的。
現(xiàn)在,你可能會(huì)問(wèn),這為什么沒(méi)給對(duì)瀏覽器造成問(wèn)題,這是因?yàn)镠TTP連接是在幕后進(jìn)行的——在內(nèi)部網(wǎng)絡(luò)上,受防火墻保護(hù)——客戶端與SSL終結(jié)器之間仍然有一個(gè)安全的連接,而后者起著傳遞的作用。
下面是SSL終止的可視化圖:

除了通過(guò)HTTP發(fā)送流量和請(qǐng)求外,SSL橋接在概念上與SSL終結(jié)非常相似,它會(huì)在將所有內(nèi)容發(fā)送到應(yīng)用程序服務(wù)器之前,重新加密它們。
這兩種方法都允許你執(zhí)行流量檢查,并且在處理更大網(wǎng)絡(luò)上的大量流量時(shí)可以提供極大的幫助。
請(qǐng)記住,加密是一項(xiàng)令人難以置信的CPU密集型任務(wù)。當(dāng)行業(yè)從1024位的RSA密鑰遷移到了2048位的RSA密鑰時(shí),根據(jù)服務(wù)器的不同,涉及到的CPU的使用增加了4-7倍。我們甚至可能永遠(yuǎn)不會(huì)獲得4096位的密鑰,因?yàn)樘孤实卣f(shuō),那時(shí),CUP使用量的增加并不能完全改善安全性。這就是為什么我們看到加密的發(fā)展趨勢(shì)更傾向于基于橢圓曲線的密碼系統(tǒng)。
因此,讓我們來(lái)討論最后一點(diǎn):你是否應(yīng)該考慮SSL卸載?
坦率地說(shuō),這一切都取決于你,你的網(wǎng)站和你想做什么。像ESPN或CNN這樣大型的媒體網(wǎng)站應(yīng)當(dāng)非常適合使用負(fù)載均衡器,因?yàn)樗鼈兌寄芴幚泶罅康牧髁?。另一方面,如果你只是為?dāng)?shù)匾患颐姘赀\(yùn)營(yíng)一個(gè)網(wǎng)站,那么讓你的服務(wù)器去處理所有的事情就可以了——尤其是TLS 1.3進(jìn)行了改進(jìn)的情況下。
— 本文結(jié)束 —

●?漫談設(shè)計(jì)模式在 Spring 框架中的良好實(shí)踐
關(guān)注我,回復(fù) 「加群」 加入各種主題討論群。
對(duì)「服務(wù)端思維」有期待,請(qǐng)?jiān)谖哪c(diǎn)個(gè)在看
喜歡這篇文章,歡迎轉(zhuǎn)發(fā)、分享朋友圈



