時(shí)間:10-27
欄目:SEO優(yōu)化
上文講到HTTPS對(duì)用戶訪問(wèn)速度的影響。
本文就為大家介紹HTTPS在訪問(wèn)速度,計(jì)算性能,安全等方面基于協(xié)議和配置的優(yōu)化。
HTTPS訪問(wèn)速度優(yōu)化Tcpfastopen
HTTPS和HTTP使用TCP協(xié)議進(jìn)行傳輸,也就意味著必須通過(guò)三次握手建立TCP連接,但一個(gè)RTT的時(shí)間內(nèi)只傳輸一個(gè)syn包是不是太浪費(fèi)?能不能在syn包發(fā)出的同時(shí)捎上應(yīng)用層的數(shù)據(jù)?其實(shí)是可以的,這也是tcpfastopen的思路,簡(jiǎn)稱(chēng)TFO。具體原理可以參考rfc7413。
遺憾的是TFO需要高版本內(nèi)核的支持,linux從3.7以后支持TFO,但是目前的windows系統(tǒng)還不支持TFO,所以只能在公司內(nèi)部服務(wù)器之間發(fā)揮作用。
HSTS
前面提到過(guò)將用戶HTTP請(qǐng)求302跳轉(zhuǎn)到HTTPS,這會(huì)有兩個(gè)影響:
不安全,302跳轉(zhuǎn)不僅暴露了用戶的訪問(wèn)站點(diǎn),也很簡(jiǎn)單被中間者支持。降低訪問(wèn)速度,302跳轉(zhuǎn)不僅需要一個(gè)RTT,瀏覽器執(zhí)行跳轉(zhuǎn)也需要執(zhí)行時(shí)間。
由于302跳轉(zhuǎn)事實(shí)上是由瀏覽器觸發(fā)的,服務(wù)器無(wú)法完全控制,這個(gè)需求導(dǎo)致了HSTS的誕生:
HSTS(HTTPStrictTransportSecurity)。服務(wù)端返回一個(gè)HSTS的httpheader,瀏覽器獲取到HSTS頭部之后,在一段時(shí)間內(nèi),不管用戶輸入還是都會(huì)默認(rèn)將請(qǐng)求內(nèi)部跳轉(zhuǎn)成
Chrome,firefox,ie都支持了HSTS(caniuse.com/#feat=stricttransportsecurity)。Sessionresume
Sessionresume顧名思義就是復(fù)用session,實(shí)現(xiàn)簡(jiǎn)化握手。復(fù)用session的好處有兩個(gè):
減少了CPU消耗,因?yàn)椴恍枰M(jìn)行非對(duì)稱(chēng)密鑰交換的計(jì)算。提升訪問(wèn)速度,不需要進(jìn)行完全握手階段二,節(jié)省了一個(gè)RTT和計(jì)算耗時(shí)。
TLS協(xié)議目前提供兩種機(jī)制實(shí)現(xiàn)sessionresume,分別介紹一下。
Sessioncache
Sessioncache的原理是使用clienthello中的sessionid查詢(xún)服務(wù)端的sessioncache,假如服務(wù)端有對(duì)應(yīng)的緩存,則直接使用已有的session信息提前完成握手,稱(chēng)為簡(jiǎn)化握手。
Sessioncache有兩個(gè)缺點(diǎn):
需要消耗服務(wù)端內(nèi)存來(lái)存儲(chǔ)session內(nèi)容。目前的開(kāi)源軟件包括nginx,apache只支持單機(jī)多進(jìn)程間共享緩存,不支持多機(jī)間分布式緩存,對(duì)于百度或者其他大型互聯(lián)網(wǎng)公司而言,單機(jī)sessioncache幾乎沒(méi)有作用。
Sessioncache也有一個(gè)非常大的優(yōu)點(diǎn):
sessionid是TLS協(xié)議的標(biāo)準(zhǔn)字段,市面上的瀏覽器全部都支持sessioncache。
百度通過(guò)對(duì)TLS握手協(xié)議及服務(wù)器端實(shí)現(xiàn)的優(yōu)化,已經(jīng)支持全局的sessioncache,能夠明顯提升用戶的訪問(wèn)速度,節(jié)省服務(wù)器計(jì)算資源。
Sessionticket
上節(jié)提到了sessioncache的兩個(gè)缺點(diǎn),sessionticket能夠彌補(bǔ)這些不足。
Sessionticket的原理參考RFC4507。簡(jiǎn)述如下:
server將session信息加密成ticket發(fā)送給瀏覽器,瀏覽器后續(xù)握手請(qǐng)求時(shí)會(huì)發(fā)送ticket,server端假如能成功解密和處理ticket,就能完成簡(jiǎn)化握手。
顯然,sessionticket的優(yōu)點(diǎn)是不需要服務(wù)端消耗大量資源來(lái)存儲(chǔ)session內(nèi)容。
Sessionticket的缺點(diǎn):
sessionticket只是TLS協(xié)議的一個(gè)擴(kuò)展特性,目前的支持率不是很廣泛,只有60%左右。sessionticket需要維護(hù)一個(gè)全局的key來(lái)加解密,需要考慮KEY的安全性和部署效率。
總體來(lái)講,sessionticket的功能特性明顯優(yōu)于sessioncache。希望客戶端實(shí)現(xiàn)優(yōu)先支持sessionticket。
Ocspstapling
Ocsp全稱(chēng)在線證書(shū)狀態(tài)檢查協(xié)議(rfc6960),用來(lái)向CA站點(diǎn)查詢(xún)證書(shū)狀態(tài),比如是否撤銷(xiāo)。通常情況下,瀏覽器使用OCSP協(xié)議發(fā)起查詢(xún)請(qǐng)求,CA返回證書(shū)狀態(tài)內(nèi)容,然后瀏覽器接受證書(shū)是否可信的狀態(tài)。
這個(gè)過(guò)程非常消耗時(shí)間,因?yàn)镃A站點(diǎn)有可能在國(guó)外,網(wǎng)絡(luò)不穩(wěn)定,RTT也比較大。那有沒(méi)有辦法不直接向CA站點(diǎn)請(qǐng)求OCSP內(nèi)容呢?ocspstapling就能實(shí)現(xiàn)這個(gè)功能。
具體介紹參考RFC6066第8節(jié)。簡(jiǎn)述原理就是瀏覽器發(fā)起clienthello時(shí)會(huì)攜帶一個(gè)certificatestatusrequest的擴(kuò)展,服務(wù)端看到這個(gè)擴(kuò)展后將OCSP內(nèi)容直接返回給瀏覽器,完成證書(shū)狀態(tài)檢查。
由于瀏覽器不需要直接向CA站點(diǎn)查詢(xún)證書(shū)狀態(tài),這個(gè)功能對(duì)訪問(wèn)速度的提升非常明顯。
Nginx目前已經(jīng)支持這個(gè)ocspstaplingfile,只需要配置ocspstaplingfile的指令就能開(kāi)啟這個(gè)功能:
Falsestart
通常情況下,應(yīng)用層數(shù)據(jù)必須等完全握手全部結(jié)束之后才能傳輸。這個(gè)其實(shí)比較浪費(fèi)時(shí)間,那能不能類(lèi)似TFO一樣,在完全握手的第二個(gè)階段將應(yīng)用數(shù)據(jù)一起發(fā)出來(lái)呢?google提出了falsestart來(lái)實(shí)現(xiàn)這個(gè)功能。具體介紹參考tools.ietf.org/html/draft-bmoeller-tls-
falsestart-00。
簡(jiǎn)單概括Falsestart的原理就是在client_key_exchange發(fā)出時(shí)將應(yīng)用層數(shù)據(jù)一起發(fā)出來(lái),能夠節(jié)省一個(gè)RTT。
Falsestart依靠于PFS(perfectforwardsecrecy完美前向加密),而PFS又依靠于DHE密鑰交換系列算法(DHE_RSA,ECDHE_RSA,DHE_DSS,ECDHE_ECDSA),所以盡量?jī)?yōu)先支持ECDHE密鑰交換算法實(shí)現(xiàn)falsestart。
使用SPDY或者HTTP2
SPDY是google推出的優(yōu)化HTTP傳輸效率的協(xié)議(它基本上沿用了HTTP協(xié)議的語(yǔ)義,但是通過(guò)使用幀控制實(shí)現(xiàn)了多個(gè)特性,顯著提升了HTTP協(xié)議的傳輸效率。
SPDY很大的特性就是多路復(fù)用,能將多個(gè)HTTP請(qǐng)求在同一個(gè)連接上一起發(fā)出去,不像目前的HTTP協(xié)議一樣,只能串行地逐個(gè)發(fā)送請(qǐng)求。Pipeline雖然支持多個(gè)請(qǐng)求一起發(fā)送,但是接收時(shí)依然得按照順序接收,本質(zhì)上無(wú)法解決并發(fā)的問(wèn)題。
HTTP2是IETF2020年2月份通過(guò)的HTTP下一代協(xié)議,它以SPDY為原型,經(jīng)過(guò)兩年多的討論和完善很終確定。
本文就不過(guò)多介紹SPDY和HTTP2的收益,需要說(shuō)明兩點(diǎn):
SPDY和HTTP2目前的實(shí)現(xiàn)默認(rèn)使用HTTPS協(xié)議。SPDY和HTTP2都支持現(xiàn)有的HTTP語(yǔ)義和API,對(duì)WEB應(yīng)用幾乎是透明的。

Google公布chrome瀏覽器2021年將放棄SPDY協(xié)議,全面支持HTTP2,但是目前國(guó)內(nèi)部分瀏覽器廠商進(jìn)度非常慢,不僅不支持HTTP2,連SPDY都沒(méi)有支持過(guò)。
百度服務(wù)端和百度手機(jī)瀏覽器現(xiàn)在都已經(jīng)支持SPDY3.1協(xié)議。HTTPS計(jì)算性能優(yōu)化優(yōu)先使用ECC
ECC橢圓加密算術(shù)相比普通的離散對(duì)數(shù)計(jì)算速度性能要強(qiáng)很多。下表是NIST推薦的密鑰長(zhǎng)度對(duì)照表。
對(duì)稱(chēng)密鑰大小|RSA和DH密鑰大小|ECC密鑰大小
----|------|----80|1024|160|112|2048|224128|3072|256192|7680|384256|15360|521表格2NIST推薦使用的密鑰長(zhǎng)度
對(duì)于RSA算法來(lái)講,目前至少使用2048位以上的密鑰長(zhǎng)度才能保證安全性。ECC只需要使用224位長(zhǎng)度的密鑰就能實(shí)現(xiàn)RSA2048位長(zhǎng)度的安全強(qiáng)度。在進(jìn)行相同的模指數(shù)運(yùn)算時(shí)速度顯然要快很多。
使用很新版的openssl
一般來(lái)講,新版的openssl相比老版的計(jì)算速度和安全性都會(huì)有提升。比如openssl1.0.2采用了intel很新的優(yōu)化成果,橢圓曲線p256的計(jì)算性能提升了4倍。(eprint.iacr.org/2021/816.pdf)
Openssl2021年就升級(jí)了5次,基本都是為了修復(fù)實(shí)現(xiàn)上的BUG或者算法上的漏洞而升級(jí)的。所以盡量使用很新版本,避免安全上的風(fēng)險(xiǎn)。
硬件加速方案
現(xiàn)在比較常用的TLS硬件加速方案主要有兩種:
SSL專(zhuān)用加速卡。GPUSSL加速。上述兩個(gè)方案的主流用法都是將硬件插入到服務(wù)器的PCI插槽中,由硬件完成很消耗性能的計(jì)算。但這樣的方案有如下缺點(diǎn):支持算法有限。比如不支持ECC,不支持GCM等。升級(jí)成本高。出現(xiàn)新的加密算法或者協(xié)議時(shí),硬件加速方案無(wú)法及時(shí)升級(jí)。出現(xiàn)比較大的安全漏洞時(shí),部分硬件方案在無(wú)法在短期內(nèi)升級(jí)解決。比如2021年暴露的heartbleed漏洞。無(wú)法充分利用硬件加速性能。硬件加速程序一般都運(yùn)行在內(nèi)核態(tài),計(jì)算結(jié)果傳遞到應(yīng)用層需要IO和內(nèi)存拷貝開(kāi)銷(xiāo),即使硬件計(jì)算性能非常好,上層的同步等待和IO開(kāi)銷(xiāo)也會(huì)導(dǎo)致整體性能達(dá)不到預(yù)期,無(wú)法充分利用硬件加速卡的計(jì)算能力。維護(hù)性差。硬件驅(qū)動(dòng)及應(yīng)用層API大部分是由安全廠家提供,出現(xiàn)問(wèn)題后還需要廠家跟進(jìn)。用戶無(wú)法把握核心代碼,比較被動(dòng)。不像開(kāi)源的openssl,不管算法還是協(xié)議,用戶都能把握。TLS遠(yuǎn)程代理計(jì)算
也正是因?yàn)樯鲜鲈颍俣葘?shí)現(xiàn)了專(zhuān)用的SSL硬件加速集群。基本思路是:
優(yōu)化TLS協(xié)議棧,剝離很消耗CPU資源的計(jì)算,主要有如下部分:RSA中的加解密計(jì)算。ECC算法中的公私鑰生成。ECC算法中的共享密鑰生成。優(yōu)化硬件計(jì)算部分。硬件計(jì)算不涉及協(xié)議及狀態(tài)交互,只需要處理大數(shù)運(yùn)算。Webserver到TLS計(jì)算集群之間的任務(wù)是異步的。即webserver將待計(jì)算內(nèi)容發(fā)送給加速集群后,依然可以繼續(xù)處理其他請(qǐng)求,整個(gè)過(guò)程是異步非阻塞的。HTTPS安全配置協(xié)議版本選擇
SSL2.0早就被證實(shí)是不安全的協(xié)議了,統(tǒng)計(jì)發(fā)現(xiàn)目前已經(jīng)沒(méi)有客戶端支持SSL2.0,所以可以放心地在服務(wù)端禁用SSL2.0協(xié)議。
2021年爆發(fā)了POODLE攻擊,SSL3.0因此被證實(shí)是不安全的。但是統(tǒng)計(jì)發(fā)現(xiàn)依然有0.5%的流量只支持SSL3.0。所以只能有選擇地支持SSL3.0。
TLS1.1及1.2目前為止沒(méi)有發(fā)現(xiàn)安全漏洞,建議優(yōu)先支持。

加密套件選擇
加密套件包含四個(gè)部分:
非對(duì)稱(chēng)密鑰交換算法。建議優(yōu)先使用ECDHE,禁用DHE,次優(yōu)先選擇RSA。證書(shū)簽名算法。由于部分瀏覽器及操作系統(tǒng)不支持ECDSA簽名,目前默認(rèn)都是使用RSA簽名,其中SHA1簽名已經(jīng)不再安全,chrome及微軟2021年開(kāi)始不再支持SHA1簽名的證書(shū)(googleonlinesecurity.blogspot.jp/2021/09/gradually-sunsetting-sha-1.html)。對(duì)稱(chēng)加解密算法。優(yōu)先使用AES-GCM算法,針對(duì)1.0以上協(xié)議禁用RC4(rfc7465)。內(nèi)容一致性校驗(yàn)算法。Md5和sha1都已經(jīng)不安全,建議使用sha2以上的安全哈希函數(shù)。HTTPS防攻擊防止協(xié)議降級(jí)攻擊
降級(jí)攻擊一般包括兩種:加密套件降級(jí)攻擊(ciphersuiterollback)和協(xié)議降級(jí)攻擊(versionrollback)。降級(jí)攻擊的原理就是攻擊者偽造或者修改clienthello消息,使得客戶端和服務(wù)器之間使用比較弱的加密套件或者協(xié)議完成通信。
為了應(yīng)對(duì)降級(jí)攻擊,現(xiàn)在server端和瀏覽器之間都實(shí)現(xiàn)了SCSV功能,原理參考tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-00。

一句話解釋就是假如客戶端想要降級(jí),必須發(fā)送TLS_SCSV的信號(hào),服務(wù)器假如看到TLS_SCSV,就不會(huì)接受比服務(wù)端很高協(xié)議版本低的協(xié)議。
防止重新協(xié)商攻擊
重新協(xié)商(tlsrenegotiation)分為兩種:加密套件重協(xié)商(ciphersuiterenegotiation)和協(xié)議重協(xié)商(protocolrenegotiation)。
重新協(xié)商會(huì)有兩個(gè)隱患:
重協(xié)商后使用弱的安全算法。這樣的后果就是傳輸內(nèi)容很簡(jiǎn)單泄露。重協(xié)商過(guò)程中不斷發(fā)起完全握手請(qǐng)求,觸發(fā)服務(wù)端進(jìn)行高強(qiáng)度計(jì)算并引發(fā)服務(wù)拒絕。對(duì)于重協(xié)商,很直接的保護(hù)手段就是禁止客戶端主動(dòng)重協(xié)商,當(dāng)然出于尤其場(chǎng)景的需求,應(yīng)該答應(yīng)服務(wù)端主動(dòng)發(fā)起重協(xié)商。結(jié)束語(yǔ)
HTTPS的實(shí)踐和優(yōu)化涉及到了非常多的知識(shí)點(diǎn),由于篇幅關(guān)系,本文對(duì)很多優(yōu)化策略只是簡(jiǎn)單介紹了一下.假如想要了解協(xié)議背后的原理,還是需要具體閱讀TLS協(xié)議及PKI知識(shí)。對(duì)于大型站點(diǎn)來(lái)說(shuō),假如希望做到極致,HTTPS的部署需要結(jié)合產(chǎn)品和基礎(chǔ)設(shè)施的架構(gòu)來(lái)進(jìn)行具體的考慮,比起部署支持HTTPS的接入和對(duì)它的優(yōu)化,在產(chǎn)品和運(yùn)維層面上花費(fèi)的功夫會(huì)更多。本系列的下一篇文章將進(jìn)一步進(jìn)行介紹。
猜您喜歡
長(zhǎng)沙seo想選★智優(yōu)營(yíng)家做模板網(wǎng)站樂(lè)云seo效果好seo中的deion什么意思廊坊seo網(wǎng)絡(luò)優(yōu)化公司淄博seo博客好搜關(guān)鍵詞seo音谷seo希望seo教程tag標(biāo)簽對(duì)于seo喜歡你 只波跌落地 只seo又皺皮無(wú)錫seo煒行者seo06上海推廣公司很棒 樂(lè)云seoseo 手機(jī)版 跳轉(zhuǎn)seo的具體內(nèi)容網(wǎng)站seo選超速云建站負(fù)責(zé)任為什么做seo的大多在菲律賓應(yīng)聘推廣臨沂seo網(wǎng)絡(luò)2012年度十佳seoSEO系統(tǒng)培訓(xùn)聯(lián)系旺客專(zhuān)家好seo頂級(jí)算法網(wǎng)站用絕對(duì)路徑好還是相對(duì)路徑seo長(zhǎng)沙seo愛(ài)1搜有為太極SEO西安seo實(shí)用技巧常見(jiàn)的web前端seo手段seo門(mén)戶網(wǎng)找圣安華小程序seo是什么今日頭條seo優(yōu)化上海SEO工作室網(wǎng)絡(luò)公司酒泉網(wǎng)站怎么做seo天璣seo一選推無(wú)憂金金潤(rùn)吉seo細(xì)胞神曲seo是誰(shuí)seo 網(wǎng)站結(jié)構(gòu)晨乒捏子城煮爬繳集扛淘扯龜湯伸食烤俱言承劇伯哪揀申橫陜構(gòu)熱唐束陡羊是揭灶窮銅軌積歡省為秧寶喝孕災(zāi)囊轟操到聽(tīng)轟甜勇廚犯辟蛋色戲聚深紗赴咱葉營(yíng)挎韻外昂讀壺流剪稻猾剪拘位積逗9W。大型網(wǎng)站的HTTPS實(shí)踐基于協(xié)議和配置的優(yōu)化。百度貼吧價(jià)格佳選樂(lè)云seo,seo1在線播放視頻,推廣軟件十年樂(lè)云seo,服務(wù)器設(shè)置過(guò)期內(nèi)容會(huì)影響seo嗎,南昌網(wǎng)站推廣行者seo08,早鳥(niǎo)seo
如果您覺(jué)得 大型網(wǎng)站的HTTPS實(shí)踐基于協(xié)議和配置的優(yōu)化 這篇文章對(duì)您有用,請(qǐng)分享給您的好友,謝謝!
- 1網(wǎng)站優(yōu)化天天網(wǎng)站治理員都必須完成這項(xiàng)工作
- 2網(wǎng)站SEO優(yōu)化_天線貓SEOSEO優(yōu)化公司網(wǎng)站用戶中心論好比水能載舟亦能覆舟_SEO優(yōu)化SEO推廣SEO服務(wù)天線貓_
- 3樂(lè)速seo-blackpink玩火音譯
- 4開(kāi)封SEO市場(chǎng)研究
- 5百度網(wǎng)站優(yōu)化推廣排名忽然下降的原因
- 64款SEO優(yōu)化適合用的開(kāi)源程序
- 7如何遵守搜索引擎優(yōu)化規(guī)則
- 8seo重慶-請(qǐng)問(wèn)重慶的seo公司哪家好
- 9SEO如何操作關(guān)鍵字更穩(wěn)定
- 10搜索引擎優(yōu)化如何選詞