返回頂部
關(guān)閉軟件導(dǎo)航
位置:首頁 > 技術(shù)分享 > SEO優(yōu)化>大型網(wǎng)站的HTTPS實踐基于協(xié)議和配置的優(yōu)化

上文講到HTTPS對用戶訪問速度的影響。

本文就為大家介紹HTTPS在訪問速度,計算性能,安全等方面基于協(xié)議和配置的優(yōu)化。

HTTPS訪問速度優(yōu)化Tcpfastopen

HTTPS和HTTP使用TCP協(xié)議進行傳輸,也就意味著必須通過三次握手建立TCP連接,但一個RTT的時間內(nèi)只傳輸一個syn包是不是太浪費?能不能在syn包發(fā)出的同時捎上應(yīng)用層的數(shù)據(jù)?其實是可以的,這也是tcpfastopen的思路,簡稱TFO。具體原理可以參考rfc7413。

遺憾的是TFO需要高版本內(nèi)核的支持,linux從3.7以后支持TFO,但是目前的windows系統(tǒng)還不支持TFO,所以只能在公司內(nèi)部服務(wù)器之間發(fā)揮作用。

HSTS

前面提到過將用戶HTTP請求302跳轉(zhuǎn)到HTTPS,這會有兩個影響:

不安全,302跳轉(zhuǎn)不僅暴露了用戶的訪問站點,也很簡單被中間者支持。降低訪問速度,302跳轉(zhuǎn)不僅需要一個RTT,瀏覽器執(zhí)行跳轉(zhuǎn)也需要執(zhí)行時間。

由于302跳轉(zhuǎn)事實上是由瀏覽器觸發(fā)的,服務(wù)器無法完全控制,這個需求導(dǎo)致了HSTS的誕生:

HSTS(HTTPStrictTransportSecurity)。服務(wù)端返回一個HSTS的httpheader,瀏覽器獲取到HSTS頭部之后,在一段時間內(nèi),不管用戶輸入還是都會默認將請求內(nèi)部跳轉(zhuǎn)成

Chrome,firefox,ie都支持了HSTS(caniuse.com/#feat=stricttransportsecurity)。Sessionresume

Sessionresume顧名思義就是復(fù)用session,實現(xiàn)簡化握手。復(fù)用session的好處有兩個:

減少了CPU消耗,因為不需要進行非對稱密鑰交換的計算。提升訪問速度,不需要進行完全握手階段二,節(jié)省了一個RTT和計算耗時。

TLS協(xié)議目前提供兩種機制實現(xiàn)sessionresume,分別介紹一下。

Sessioncache

Sessioncache的原理是使用clienthello中的sessionid查詢服務(wù)端的sessioncache,假如服務(wù)端有對應(yīng)的緩存,則直接使用已有的session信息提前完成握手,稱為簡化握手。

Sessioncache有兩個缺點:

需要消耗服務(wù)端內(nèi)存來存儲session內(nèi)容。目前的開源軟件包括nginx,apache只支持單機多進程間共享緩存,不支持多機間分布式緩存,對于百度或者其他大型互聯(lián)網(wǎng)公司而言,單機sessioncache幾乎沒有作用。

Sessioncache也有一個非常大的優(yōu)點:

sessionid是TLS協(xié)議的標(biāo)準(zhǔn)字段,市面上的瀏覽器全部都支持sessioncache。

百度通過對TLS握手協(xié)議及服務(wù)器端實現(xiàn)的優(yōu)化,已經(jīng)支持全局的sessioncache,能夠明顯提升用戶的訪問速度,節(jié)省服務(wù)器計算資源。

Sessionticket

上節(jié)提到了sessioncache的兩個缺點,sessionticket能夠彌補這些不足。

Sessionticket的原理參考RFC4507。簡述如下:

server將session信息加密成ticket發(fā)送給瀏覽器,瀏覽器后續(xù)握手請求時會發(fā)送ticket,server端假如能成功解密和處理ticket,就能完成簡化握手。

顯然,sessionticket的優(yōu)點是不需要服務(wù)端消耗大量資源來存儲session內(nèi)容。

Sessionticket的缺點:

sessionticket只是TLS協(xié)議的一個擴展特性,目前的支持率不是很廣泛,只有60%左右。sessionticket需要維護一個全局的key來加解密,需要考慮KEY的安全性和部署效率。

總體來講,sessionticket的功能特性明顯優(yōu)于sessioncache。希望客戶端實現(xiàn)優(yōu)先支持sessionticket。

Ocspstapling

Ocsp全稱在線證書狀態(tài)檢查協(xié)議(rfc6960),用來向CA站點查詢證書狀態(tài),比如是否撤銷。通常情況下,瀏覽器使用OCSP協(xié)議發(fā)起查詢請求,CA返回證書狀態(tài)內(nèi)容,然后瀏覽器接受證書是否可信的狀態(tài)。

這個過程非常消耗時間,因為CA站點有可能在國外,網(wǎng)絡(luò)不穩(wěn)定,RTT也比較大。那有沒有辦法不直接向CA站點請求OCSP內(nèi)容呢?ocspstapling就能實現(xiàn)這個功能。

具體介紹參考RFC6066第8節(jié)。簡述原理就是瀏覽器發(fā)起clienthello時會攜帶一個certificatestatusrequest的擴展,服務(wù)端看到這個擴展后將OCSP內(nèi)容直接返回給瀏覽器,完成證書狀態(tài)檢查。

由于瀏覽器不需要直接向CA站點查詢證書狀態(tài),這個功能對訪問速度的提升非常明顯。

Nginx目前已經(jīng)支持這個ocspstaplingfile,只需要配置ocspstaplingfile的指令就能開啟這個功能:

Falsestart

通常情況下,應(yīng)用層數(shù)據(jù)必須等完全握手全部結(jié)束之后才能傳輸。這個其實比較浪費時間,那能不能類似TFO一樣,在完全握手的第二個階段將應(yīng)用數(shù)據(jù)一起發(fā)出來呢?google提出了falsestart來實現(xiàn)這個功能。具體介紹參考tools.ietf.org/html/draft-bmoeller-tls-

falsestart-00。

簡單概括Falsestart的原理就是在client_key_exchange發(fā)出時將應(yīng)用層數(shù)據(jù)一起發(fā)出來,能夠節(jié)省一個RTT。

Falsestart依靠于PFS(perfectforwardsecrecy完美前向加密),而PFS又依靠于DHE密鑰交換系列算法(DHE_RSA,ECDHE_RSA,DHE_DSS,ECDHE_ECDSA),所以盡量優(yōu)先支持ECDHE密鑰交換算法實現(xiàn)falsestart。

使用SPDY或者HTTP2

SPDY是google推出的優(yōu)化HTTP傳輸效率的協(xié)議(它基本上沿用了HTTP協(xié)議的語義,但是通過使用幀控制實現(xiàn)了多個特性,顯著提升了HTTP協(xié)議的傳輸效率。

SPDY很大的特性就是多路復(fù)用,能將多個HTTP請求在同一個連接上一起發(fā)出去,不像目前的HTTP協(xié)議一樣,只能串行地逐個發(fā)送請求。Pipeline雖然支持多個請求一起發(fā)送,但是接收時依然得按照順序接收,本質(zhì)上無法解決并發(fā)的問題。

HTTP2是IETF2020年2月份通過的HTTP下一代協(xié)議,它以SPDY為原型,經(jīng)過兩年多的討論和完善很終確定。

本文就不過多介紹SPDY和HTTP2的收益,需要說明兩點:

SPDY和HTTP2目前的實現(xiàn)默認使用HTTPS協(xié)議。SPDY和HTTP2都支持現(xiàn)有的HTTP語義和API,對WEB應(yīng)用幾乎是透明的。

大型網(wǎng)站的HTTPS實踐基于協(xié)議和配置的優(yōu)化

Google公布chrome瀏覽器2021年將放棄SPDY協(xié)議,全面支持HTTP2,但是目前國內(nèi)部分瀏覽器廠商進度非常慢,不僅不支持HTTP2,連SPDY都沒有支持過。

百度服務(wù)端和百度手機瀏覽器現(xiàn)在都已經(jīng)支持SPDY3.1協(xié)議。HTTPS計算性能優(yōu)化優(yōu)先使用ECC

ECC橢圓加密算術(shù)相比普通的離散對數(shù)計算速度性能要強很多。下表是NIST推薦的密鑰長度對照表。

對稱密鑰大小|RSA和DH密鑰大小|ECC密鑰大小

----|------|----80|1024|160|112|2048|224128|3072|256192|7680|384256|15360|521表格2NIST推薦使用的密鑰長度

對于RSA算法來講,目前至少使用2048位以上的密鑰長度才能保證安全性。ECC只需要使用224位長度的密鑰就能實現(xiàn)RSA2048位長度的安全強度。在進行相同的模指數(shù)運算時速度顯然要快很多。

使用很新版的openssl

一般來講,新版的openssl相比老版的計算速度和安全性都會有提升。比如openssl1.0.2采用了intel很新的優(yōu)化成果,橢圓曲線p256的計算性能提升了4倍。(eprint.iacr.org/2021/816.pdf)

Openssl2021年就升級了5次,基本都是為了修復(fù)實現(xiàn)上的BUG或者算法上的漏洞而升級的。所以盡量使用很新版本,避免安全上的風(fēng)險。

硬件加速方案

現(xiàn)在比較常用的TLS硬件加速方案主要有兩種:

SSL專用加速卡。GPUSSL加速。上述兩個方案的主流用法都是將硬件插入到服務(wù)器的PCI插槽中,由硬件完成很消耗性能的計算。但這樣的方案有如下缺點:支持算法有限。比如不支持ECC,不支持GCM等。升級成本高。出現(xiàn)新的加密算法或者協(xié)議時,硬件加速方案無法及時升級。出現(xiàn)比較大的安全漏洞時,部分硬件方案在無法在短期內(nèi)升級解決。比如2021年暴露的heartbleed漏洞。無法充分利用硬件加速性能。硬件加速程序一般都運行在內(nèi)核態(tài),計算結(jié)果傳遞到應(yīng)用層需要IO和內(nèi)存拷貝開銷,即使硬件計算性能非常好,上層的同步等待和IO開銷也會導(dǎo)致整體性能達不到預(yù)期,無法充分利用硬件加速卡的計算能力。維護性差。硬件驅(qū)動及應(yīng)用層API大部分是由安全廠家提供,出現(xiàn)問題后還需要廠家跟進。用戶無法把握核心代碼,比較被動。不像開源的openssl,不管算法還是協(xié)議,用戶都能把握。TLS遠程代理計算

也正是因為上述原因,百度實現(xiàn)了專用的SSL硬件加速集群。基本思路是:

優(yōu)化TLS協(xié)議棧,剝離很消耗CPU資源的計算,主要有如下部分:RSA中的加解密計算。ECC算法中的公私鑰生成。ECC算法中的共享密鑰生成。優(yōu)化硬件計算部分。硬件計算不涉及協(xié)議及狀態(tài)交互,只需要處理大數(shù)運算。Webserver到TLS計算集群之間的任務(wù)是異步的。即webserver將待計算內(nèi)容發(fā)送給加速集群后,依然可以繼續(xù)處理其他請求,整個過程是異步非阻塞的。HTTPS安全配置協(xié)議版本選擇

SSL2.0早就被證實是不安全的協(xié)議了,統(tǒng)計發(fā)現(xiàn)目前已經(jīng)沒有客戶端支持SSL2.0,所以可以放心地在服務(wù)端禁用SSL2.0協(xié)議。

2021年爆發(fā)了POODLE攻擊,SSL3.0因此被證實是不安全的。但是統(tǒng)計發(fā)現(xiàn)依然有0.5%的流量只支持SSL3.0。所以只能有選擇地支持SSL3.0。

TLS1.1及1.2目前為止沒有發(fā)現(xiàn)安全漏洞,建議優(yōu)先支持。

加密套件選擇

加密套件包含四個部分:

非對稱密鑰交換算法。建議優(yōu)先使用ECDHE,禁用DHE,次優(yōu)先選擇RSA。證書簽名算法。由于部分瀏覽器及操作系統(tǒng)不支持ECDSA簽名,目前默認都是使用RSA簽名,其中SHA1簽名已經(jīng)不再安全,chrome及微軟2021年開始不再支持SHA1簽名的證書(googleonlinesecurity.blogspot.jp/2021/09/gradually-sunsetting-sha-1.html)。對稱加解密算法。優(yōu)先使用AES-GCM算法,針對1.0以上協(xié)議禁用RC4(rfc7465)。內(nèi)容一致性校驗算法。Md5和sha1都已經(jīng)不安全,建議使用sha2以上的安全哈希函數(shù)。HTTPS防攻擊防止協(xié)議降級攻擊

降級攻擊一般包括兩種:加密套件降級攻擊(ciphersuiterollback)和協(xié)議降級攻擊(versionrollback)。降級攻擊的原理就是攻擊者偽造或者修改clienthello消息,使得客戶端和服務(wù)器之間使用比較弱的加密套件或者協(xié)議完成通信。

為了應(yīng)對降級攻擊,現(xiàn)在server端和瀏覽器之間都實現(xiàn)了SCSV功能,原理參考tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-00。

一句話解釋就是假如客戶端想要降級,必須發(fā)送TLS_SCSV的信號,服務(wù)器假如看到TLS_SCSV,就不會接受比服務(wù)端很高協(xié)議版本低的協(xié)議。

防止重新協(xié)商攻擊

重新協(xié)商(tlsrenegotiation)分為兩種:加密套件重協(xié)商(ciphersuiterenegotiation)和協(xié)議重協(xié)商(protocolrenegotiation)。

重新協(xié)商會有兩個隱患:

重協(xié)商后使用弱的安全算法。這樣的后果就是傳輸內(nèi)容很簡單泄露。重協(xié)商過程中不斷發(fā)起完全握手請求,觸發(fā)服務(wù)端進行高強度計算并引發(fā)服務(wù)拒絕。對于重協(xié)商,很直接的保護手段就是禁止客戶端主動重協(xié)商,當(dāng)然出于尤其場景的需求,應(yīng)該答應(yīng)服務(wù)端主動發(fā)起重協(xié)商。結(jié)束語

HTTPS的實踐和優(yōu)化涉及到了非常多的知識點,由于篇幅關(guān)系,本文對很多優(yōu)化策略只是簡單介紹了一下.假如想要了解協(xié)議背后的原理,還是需要具體閱讀TLS協(xié)議及PKI知識。對于大型站點來說,假如希望做到極致,HTTPS的部署需要結(jié)合產(chǎn)品和基礎(chǔ)設(shè)施的架構(gòu)來進行具體的考慮,比起部署支持HTTPS的接入和對它的優(yōu)化,在產(chǎn)品和運維層面上花費的功夫會更多。本系列的下一篇文章將進一步進行介紹。

晨乒捏子城煮爬繳集扛淘扯龜湯伸食烤俱言承劇伯哪揀申橫陜構(gòu)熱唐束陡羊是揭灶窮銅軌積歡省為秧寶喝孕災(zāi)囊轟操到聽轟甜勇廚犯辟蛋色戲聚深紗赴咱葉營挎韻外昂讀壺流剪稻猾剪拘位積逗9W。大型網(wǎng)站的HTTPS實踐基于協(xié)議和配置的優(yōu)化。百度貼吧價格佳選樂云seo,seo1在線播放視頻,推廣軟件十年樂云seo,服務(wù)器設(shè)置過期內(nèi)容會影響seo嗎,南昌網(wǎng)站推廣行者seo08,早鳥seo

如果您覺得 大型網(wǎng)站的HTTPS實踐基于協(xié)議和配置的優(yōu)化 這篇文章對您有用,請分享給您的好友,謝謝!

主站蜘蛛池模板: 国产成人欧美一区二区三区| 国产日韩成人内射视频| 18级成人毛片免费观看| 久久成人国产精品| 欧美成人精品大片免费流量| 成人永久福利在线观看不卡| 国产精品成人久久久| 免费看污成人午夜网站| 欧美成人免费在线| 国产成人一区二区三区在线观看| 亚洲国产一成人久久精品| 无遮挡韩国成人羞羞漫画网站 | 成人网站免费看黄a站视频| 成人a毛片在线看免费全部播放| 免费成人一级片| 成人a一级试看片| 成人黄色在线网站| 亚洲2022国产成人精品无码区| 成人无码嫩草影院| 草莓视频成人appios| 午夜成人无码福利免费视频| 成人激情免费视频| 粗大黑人巨精大战欧美成人| 亚洲成人免费看| 国产成人久久精品亚洲小说| 成人中文字幕在线| 成人午夜视频精品一区| 成人网视频免费播放| 欧美成人黄色片| 18成人片黄网站www| 亚洲欧美成人综合久久久| 在线成人播放毛片| 成人乱码一区二区三区AV| 成人自慰女黄网站免费大全| www成人免费观看网站| 久久久久亚洲AV成人片| 亚洲人成人无码网www国产| 免费成人av电影| 99国产精品久久久久久久成人热 | 亚洲AV无码成人精品区在线观看 | 成人午夜精品无码区久久|