网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網(wǎng)

HTTPS 協(xié)議深度解析,為什么小程序開發(fā)者需要關(guān)注

發(fā)布時(shí)間:2018-04-13 15:02 所屬欄目:小程序開發(fā)教程

一、微信小程序接入的困境

農(nóng)歷新年將至,微信小程序也如期發(fā)布,開發(fā)者在接入微信小程序過程中,會(huì)遇到以下問題:

小程序要求必須通過 HTTPS 完成與服務(wù)端通信,若開發(fā)者選擇自行搭建 HTTPS 服務(wù),那需要自行 SSL 證書申請(qǐng)、部署,完成 https 服務(wù)搭建,效率低流程冗長;且 HTTPS 的 SSL 加解析,對(duì)服務(wù)器的 CPU 有極大的開銷。

不僅僅是小程序,蘋果 iOS 平臺(tái),Google Android 在 2017 也逐步強(qiáng)制要求開發(fā)者使用 HTTPS 接入。HTTPS 似乎是一個(gè)繞不開的門檻,讓不少開發(fā)者頭痛不已。

針對(duì)以上問題,騰訊云的負(fù)載均衡服務(wù)(cloud load balance),希望通過對(duì) HTTPS 的性能優(yōu)化,提供一鍵式的 SSL 證書申請(qǐng)服務(wù),降低 HTTPS 的應(yīng)用門檻和使用成本,讓開發(fā)者能快速接入微信小程序等服務(wù)。首先,先讓我們看看 HTTP 與 HTTPS 的對(duì)比,逐一解開您的謎團(tuán)。

二、為什么要接入 HTTPS—HTTP 的安全風(fēng)險(xiǎn)

HTTP 協(xié)議是一個(gè)非常簡單和高效的協(xié)議,互聯(lián)網(wǎng)大部分的主流應(yīng)用默認(rèn)都是使用的HTTP。由于性能和上個(gè)世紀(jì) 90 年代使用環(huán)境的限制,HTTP 協(xié)議本身并不是一個(gè)為了安全設(shè)計(jì)的協(xié)議,既沒有身份認(rèn)證,也沒有一致性檢驗(yàn),最頭疼的是,HTTP 所有的內(nèi)容都是明文傳輸?shù)摹?/p>

另外一方面,互聯(lián)網(wǎng)的發(fā)展也是日新月異,各種 HTTP 應(yīng)用不斷地滲透到人們生活的方方面面。不管是社交、購物、金融、游戲、還是搜索,這些 HTTP 服務(wù)都能帶給人們極大的便捷,提升生活質(zhì)量和效率。

顯然,HTTP 和人們生活及經(jīng)濟(jì)利益密切相關(guān),遺憾的是,它不安全。也就意味著這里一 定潛藏著巨大的安全隱患。這些隱患又集中表現(xiàn)在如下兩方面:

1、隱私泄露

由于 HTTP 本身是明文傳輸,用戶和服務(wù)端之間的傳輸內(nèi)容都能被中間者查看。也就是說 你在網(wǎng)上搜索、購物、訪問的網(wǎng)點(diǎn)、點(diǎn)擊的頁面等信息,都可以被「中間人」獲取。由于國人大多不太重視隱私的保護(hù),這里的風(fēng)險(xiǎn)比較隱性,傷害后果也不太好定量評(píng)估。已知的一些比較嚴(yán)重的隱私泄露事件包括:

  1. QQ 登陸態(tài)被不法分子竊取,然后在異地登陸,進(jìn)行廣告和欺詐行為。
  2. 用戶手機(jī)號(hào)和身份信息泄露。
  3. 用戶網(wǎng)上行為泄露。比如搜索了一所醫(yī)院,很快就會(huì)有人打電話進(jìn)行推廣(非效果廣告)。

2、頁面劫持

隱私泄露的風(fēng)險(xiǎn)比較隱蔽,用戶基本感知不到。但另外一類劫持的影響就非常明顯非常直接了——頁面劫持,也就是直接篡改用戶的瀏覽頁面。有很多頁面劫持很簡單粗暴,直接插入第三方廣告或者運(yùn)營商的流量提示信息。

但也有一些劫持做得比較隱蔽,比如下面的京東頁面劫持:其中上圖是使用 HTTP 方面的頁面,頂部箭頭所示的地方出現(xiàn)了一個(gè)購物推薦,很逼真,就像京東或者瀏覽器官方的工具。

但換成 HTTPS 訪問,就沒有這個(gè)工具頁面,顯然是被劫持了。

3、劫持路徑及分類

那劫持到底是如何產(chǎn)生的呢?從技術(shù)上來講比較簡單,在內(nèi)容經(jīng)過的地方進(jìn)行監(jiān)聽篡改就行了。但要想把整個(gè)劫持的產(chǎn)業(yè)鏈條摸清楚,需要深入黑產(chǎn)內(nèi)部,比較困難。有一點(diǎn)可以肯定的是,劫持大部分都是在中間的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)生的,又叫「中間人」(MITM, man in the middle)。如下圖所示:

由于信息傳輸都需要經(jīng)過上述的「中間人節(jié)點(diǎn)」,它們又擁有信息的讀寫權(quán)限,如果信息沒有加密,也沒有校驗(yàn),那么想要查看隱私,篡改頁面,對(duì)于「中間人」來說可謂是輕而易舉。

那劫持又有哪些主要的分類呢?根據(jù)劫持路徑劃分的話,主要是下圖所示的三類:

DNS 劫持,客戶端劫持和鏈路劫持。 根據(jù)我們的不完全統(tǒng)計(jì),業(yè)務(wù)遇到的絕大部分劫持 (90%)都屬于鏈路劫持。

三、HTTPS 是解決鏈路劫持的核武器

HTTPS 為什么能很好的解決鏈路劫持呢?主要是三大武器:

1、身份認(rèn)證—防假冒,防抵賴

每次建立一個(gè)全新的 HTTPS 連接時(shí),都需要對(duì)身份進(jìn)行認(rèn)證,確保用戶訪問的是正確的目的網(wǎng)站。

2、內(nèi)容加密—防竊聽

內(nèi)容加密意味端對(duì)端的通信內(nèi)容全都是密文,中間人無法直接查看到明文,HTTPS 所有的應(yīng)用層內(nèi)容都是通過對(duì)稱加密來實(shí)現(xiàn)加密和解密的。

3、一致性校驗(yàn)—防篡改

通過對(duì)數(shù)據(jù)和共享密鑰的 MAC 碼來防止中間者篡改消息內(nèi)容,確保數(shù)據(jù)的一致性。

四、HTTPS 普及之痛

事實(shí)上 HTTPS 1995 年就誕生了,是一個(gè)非常古老、成熟的協(xié)議。同時(shí)又能很好地防止內(nèi)容劫持,保護(hù)用戶隱私。但是為什么一直到今天,還有大部分的網(wǎng)站不支持 HTTPS,只使用 HTTP 呢?

影響 HTTPS 普及的主要原因可以概括為兩個(gè)字:「慢」和「貴」。

1、慢

在未經(jīng)任何優(yōu)化的情況下,HTTPS 會(huì)嚴(yán)重降低用戶的訪問速度。主要因素包括:

  1. 網(wǎng)絡(luò)耗時(shí)。由于協(xié)議的規(guī)定,必須要進(jìn)行的網(wǎng)絡(luò)傳輸。比如 SSL 完全握手,302 跳轉(zhuǎn)等。最壞情況下可能要增加 7 個(gè) RTT。

  1. 計(jì)算耗時(shí)。無論是客戶端還是服務(wù)端,都需要進(jìn)行對(duì)稱加解密,協(xié)議解析,私鑰計(jì)算,證書校驗(yàn)等計(jì)算,增加大量的計(jì)算時(shí)間。

2、貴

HTTPS 的貴,主要體現(xiàn)在如下三方面:

  1. 服務(wù)器成本。HTTPS 的私鑰計(jì)算會(huì)導(dǎo)致服務(wù)端性能的急劇下降,甚至不到 HTTP 協(xié)議的十分之一,也就是說,如果 HTTP 的性能是 10000cps,HTTPS 的性能可能只有幾百 cps,會(huì)增加數(shù)倍甚至數(shù)十倍的服務(wù)器成本。

  2. 證書成本。根據(jù)證書個(gè)數(shù)及證書類型,一年可能需要花費(fèi)幾百到幾百萬不等的證書成本。

  3. 開發(fā)和運(yùn)維成本。HTTPS 協(xié)議比較復(fù)雜,openssl 的開源實(shí)現(xiàn)也經(jīng)常發(fā)生安全BUG, 包括協(xié)議的配置,證書的更新,過期監(jiān)控,客戶端的兼容等一系列問題都需要具備專業(yè)背景的技術(shù)人員跟進(jìn)處理。

五、騰訊云負(fù)載均衡器 HTTPS 的性能優(yōu)化

騰訊云負(fù)載均衡器深針對(duì) HTTPS 推廣應(yīng)用過程中的痛點(diǎn)進(jìn)行了深度優(yōu)化。接下來我們?cè)敿?xì)地介紹下這些優(yōu)化方案:

1、訪問速度的優(yōu)化

前文提到 HTTPS 非常慢,我們也主要從兩個(gè)層面對(duì)訪問速度進(jìn)行了優(yōu)化:協(xié)議棧和前后端資源。

全鏈路協(xié)議棧優(yōu)化

HTTPS 可以認(rèn)為是 HTTP over SSL,而 HTTPS 又是使用 TCP 協(xié)議進(jìn)行傳輸,所以整個(gè)協(xié)議棧的優(yōu)化涉及到三個(gè)層面:

  1. TCP 優(yōu)化。包括擁塞窗口的調(diào)整,tcp fast open,reuseport 的支持,最新的 BBR 擁塞控制算法的支持等。

  1. SSL 協(xié)議優(yōu)化。分布式 session cache, session ticket,F(xiàn)alse start, ocsp stapling file, 動(dòng)態(tài) record size 等。

SSL 協(xié)議優(yōu)化最重要的目標(biāo)還是提升簡化握手的比例。騰訊云通過實(shí)現(xiàn)全局 session cache 和全局 session ticket 來提升 SSL 的簡化握手比例,節(jié)省用戶訪問時(shí)間和計(jì)算資源。

  1. 應(yīng)用層協(xié)議優(yōu)化。同時(shí)支持 SPDY,HTTP2,HSTS 等。

HTTP2 相比 HTTP1.X 最大的優(yōu)勢(shì)就是多路復(fù)用,能夠?qū)⒍鄠€(gè) HTTP 請(qǐng)求通過一個(gè) TCP 連接并行發(fā)送,相比 HTTP1.X 的串行發(fā)送,性能無疑是提升很多。

由于 HTTP2 是從 SPDY 繼承發(fā)展出來的,所以部分較老的客戶端只支持 SPDY,不支持 HTTP2。而大部分新客戶端,只支持 HTTP2,不支持 SPDY。為了同時(shí)兼容新老客戶端的性能,騰訊云同時(shí)支持 SPDY 和 HTTP2,最大化提升新老版本客戶端的性能。

前后端優(yōu)化

HTTP2 及 SPDY 最大的特性和優(yōu)勢(shì)就是多路復(fù)用,能夠?qū)⒍鄠€(gè)請(qǐng)求通過一個(gè)連接并行發(fā)送出來。這個(gè)特性雖然很強(qiáng)大,但是如果還使用傳統(tǒng)的 HTTP 優(yōu)化策略,多路復(fù)用的效果會(huì)很有限。比如域名分片,pipline 等都會(huì)影響多路復(fù)用的效果。于是我們又通過多次的數(shù)據(jù)實(shí)驗(yàn),調(diào)整了一些前端資源包括后端接入的策略:

  1. 域名收歸。通過頁面資源及性能分析,確實(shí)域名收歸方案,比如移動(dòng)頁面不超過 3 個(gè)。
  2. 預(yù)建連接。STGW 提供預(yù)連接頁面,通過對(duì)熱點(diǎn)頁面的用戶行為進(jìn)行分析,提前建立連接,減少協(xié)議開銷對(duì)用戶體驗(yàn)的影響。
  3. 通過騰訊云遍布全球的 CDN 及 IDC 節(jié)點(diǎn)就近完成 HTTPS 卸載。

2、計(jì)算性能優(yōu)化

針對(duì) HTTPS 的計(jì)算性能,騰訊云主要從三個(gè)層面進(jìn)行了優(yōu)化,包括:

  1. 盡量減少完全握手的發(fā)生,提升簡化握手比例。比如前文提到的全局 sessioncache 和 session ticket。
  2. 對(duì)于不可避免的完全握手,騰訊云實(shí)現(xiàn)了 RSA 異步代理計(jì)算,通過對(duì)協(xié)議棧的改造和 SSL 硬件加速卡的使用,大幅度提升了 HTTPS 的計(jì)算能力和防攻擊能力。
  3. 對(duì)稱加密計(jì)算過程也進(jìn)行了場景使用上的優(yōu)化。

下面再詳細(xì)介紹一下:

RSA 異步代理計(jì)算

騰訊云針對(duì) HTTPS 性能消耗最嚴(yán)重的環(huán)節(jié)——非對(duì)稱密鑰交換算法進(jìn)行了重點(diǎn)優(yōu)化。優(yōu)化思路主要包括如下三部分:

  1. 算法分離。就是將最消耗 CPU 資源的算法剝離出來,不讓消耗本地的 CPU 資源。

  2. 代理計(jì)算。使用空閑的 CPU 機(jī)器或者專門的 SSL 硬件加速卡來完成 RSA 計(jì)算。

  3. 異步執(zhí)行。傳統(tǒng)的 openssl 在進(jìn)行 RSA 的時(shí)候,上層應(yīng)用,比如 NGINX 都需要同步等待。這一步驟也非常影響,必須要進(jìn)行異步改造,這樣在加速集群進(jìn)行 RSA 計(jì)算的時(shí)候,接入服務(wù)器也可以接入其他用戶的請(qǐng)求,提升吞吐能力。

通過對(duì) openssl 握手協(xié)議棧的深度改造以及 SSL 硬件加速卡的 RSA 計(jì)算性能,騰訊云 CLB 的 SSL 計(jì)算能力提升了 350%。單機(jī) ECDHE_RSA 處理性能達(dá)到了 65000 cps。

對(duì)稱加密算法的自動(dòng)最優(yōu)選擇

騰訊云根據(jù)應(yīng)用場景匹配最優(yōu)的對(duì)稱加密算法:

  1. 對(duì)于視頻等流媒體內(nèi)容,優(yōu)先使用 aes-gcm。
  2. 針對(duì)不支持 aes-ni 硬件加速指令的移動(dòng)終端,使用 chacha20-poly1305 。
  3. 針對(duì) IE6 等古董級(jí)別的客戶端,使用 RC4 算法。

3、協(xié)議的并行卸載

騰訊云 CLB 支持現(xiàn)在主流的全部 HTTP 類協(xié)議接入和卸載。包括:

  1. http1.0/http1.1
  2. http2 及前身 spdy3.1
  3. https,包括 ssl3.0, tlsv1.0,tlsv1.1,tlsv1.2
  4. websocket 及 secure websocket。
  5. tcp,udp 透明轉(zhuǎn)發(fā)。

CLB 能夠?qū)⑸鲜銎邔訁f(xié)議統(tǒng)一轉(zhuǎn)換成 HTTP1.1,透傳給業(yè)務(wù)。對(duì)業(yè)務(wù)的好處也非常明顯: 0 開發(fā)成本就能使用 HTTPS 和 HTTP2,極大減少了適配各種協(xié)議和客戶端的壓力。

4、安全

安全涉及的領(lǐng)域和場景非常龐大,HTTPS 雖然能夠徹底解決鏈路劫持,但是對(duì)于如下兩類問題卻無能為力:

  1. CC 攻擊,特別是 HTTPS 計(jì)算型攻擊,HTTPS 的性能會(huì)急劇降低,引入更大的安全風(fēng)險(xiǎn)。
  2. 業(yè)務(wù)安全,包括 SQL 注入,XSS 跨站、網(wǎng)站掛馬等。

上述兩類都是經(jīng)常困擾業(yè)務(wù)的風(fēng)險(xiǎn)極大的安全問題。

針對(duì)上述問題,騰訊云也設(shè)計(jì)實(shí)現(xiàn)了一套針對(duì) HTTPS 的防 CC 和 WAF 的安全系統(tǒng),能夠有效地防御這類安全風(fēng)險(xiǎn)。

Keyless(無密鑰加載)

私鑰的重要性

對(duì)證書稍微熟悉的朋友都知道,SSL 密鑰和證書都是成對(duì)使用的,一個(gè)證書一定唯一對(duì)應(yīng)一個(gè)私鑰。整個(gè) HTTPS 最重要的一個(gè)數(shù)據(jù)就是 SSL 的私鑰了,如果私鑰泄露,整個(gè)握手過程就可以被劫持,簽名可以被偽造,對(duì)稱密鑰也可以被破解。整個(gè) HTTPS 就毫無安全可言。

傳統(tǒng)的私鑰使用方案和風(fēng)險(xiǎn)

傳統(tǒng)的私鑰方案就是將私鑰和應(yīng)用程序綁定在一起。比如大家熟知的 nginx, apache,如果想使用 HTTPS,必須在部署 nginx 的接入機(jī)器上部署相關(guān)的證書和私鑰。

這種方案會(huì)有如下安全上的問題:私鑰部署在云端或者 CDN,如果泄露了怎么辦?

無秘鑰方式

雖然騰訊云的內(nèi)網(wǎng)非常安全,但是出于對(duì)客戶的安全負(fù)責(zé),徹底打消用戶對(duì)私鑰泄露的顧 慮,確保用戶對(duì)私鑰的絕對(duì)控制,騰訊云提供一種無私鑰的加載方案。這個(gè)方案核心是「不需要把私鑰存儲(chǔ)在騰訊云,允許用戶使用自己的服務(wù)器保管私鑰,完成 HTTPS 的接入」。 騰訊云完全接觸不到私鑰,客戶甚至可以把私鑰保存在自己家里的服務(wù)器上。

它的接入過程如下:

  1. 用戶發(fā)起 HTTPS 握手請(qǐng)求。
  2. 在涉及到私鑰計(jì)算的時(shí)候,騰訊云 CLB 會(huì)將這個(gè)私鑰計(jì)算請(qǐng)求通過加密的自定義協(xié)議,轉(zhuǎn)發(fā)給用戶自己的 keyless 服務(wù)器上。
  3. keyless 服務(wù)調(diào)用用戶的私鑰完成計(jì)算。
  4. keyless 服務(wù)將計(jì)算結(jié)果返回給騰訊云 CLB。
  5. CLB 繼續(xù)進(jìn)行 HTTPS 請(qǐng)求的處理。

整個(gè)過程,騰訊云接觸不到 HTTPS 私鑰,需要注意一點(diǎn)的,keyless server 是騰訊云提供一個(gè)服務(wù)端程序,代碼開源,用戶自主部署,服務(wù)端行為用戶掌握得一清二楚。

六、零門檻,HTTPS 快速接入微信小程序

騰訊云 CLB 負(fù)載均衡器通過對(duì)協(xié)議棧及服務(wù)端的深度優(yōu)化,實(shí)現(xiàn)了 HTTPS 性能的巨大提升。同時(shí),我們也通過與國際上著名的證書機(jī)構(gòu)合作,極大降低了證書的成本。騰訊云 CLB 在如下幾個(gè)方面,能夠?yàn)槲⑿判〕绦蚪尤霂矸浅o@著的收益:

  1. 提供一鍵式的 SSL 證書申請(qǐng),CLB 負(fù)載均衡服務(wù)作為 HTTPS 代理,減輕開發(fā)負(fù)擔(dān),讓開發(fā)者可以專注小程序業(yè)務(wù)的開發(fā)。

  2. 使用 HTTPS 并不會(huì)降低 client 端的訪問速度。HTTP、HTTPS 訪問時(shí)延幾乎一致。

  3. 集群內(nèi)單臺(tái)服務(wù)器 SSL 加解密性能,高達(dá) 6.5Wcps 的完全握手。相比高性能CPU 提升了至少 3.5 倍,節(jié)省了服務(wù)端成本,極大提升了業(yè)務(wù)運(yùn)營及流量突漲時(shí)的服務(wù)能力, 增強(qiáng)了計(jì)算型防攻擊的能力。

  4. 支持多種協(xié)議卸載及轉(zhuǎn)換。減少業(yè)務(wù)適配客戶端各種協(xié)議的壓力,業(yè)務(wù)后端只需要支持 HTTP1.1 就能使用 HTTP2,SPDY,SSL3.0,TLS1.2 等各版本協(xié)議。滿足微信小程序,iOS 平臺(tái)等對(duì)協(xié)議的要求。

  5. SSL 證書申請(qǐng)、監(jiān)控、替換。我們和國際頂級(jí)的證書廠商 comodo,symantec 已有深入合作,服務(wù)體系完善。

  6. 防 CC 及 WAF 功能。能夠有效杜絕慢連接、高頻定點(diǎn)攻擊、SQL 注入、網(wǎng)頁掛馬等應(yīng)用層攻擊。

以上的這些收益,可以幫助開發(fā)者降低 HTTPS 的試用門檻。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/23352.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×