聊聊全站HTTPS帶來的技術(shù)挑戰(zhàn)
日前寫的文章里了討論了數(shù)據(jù)傳輸?shù)陌踩缘膯栴},最后一部分提到了通過HTTPS解決數(shù)據(jù)傳輸安全性的方案。那么一個(gè)新問題又來了,實(shí)施全站HTTPS的過程中,我們可能會(huì)遇到哪些技術(shù)問題?所以我今天和大家一起來算一下這個(gè)賬,將技術(shù)成本理清楚。
準(zhǔn)備工作
- 購(gòu)買證書 ,網(wǎng)站使用HTTPS需要申請(qǐng)安全證書,目前來說還是比較繁瑣的,而且對(duì)小公司來說是有一些成本在。另外,一定要選正規(guī)的機(jī)構(gòu),否則你的網(wǎng)站以后使用主流瀏覽器,如chrome訪問,會(huì)被提示大大的警告,告訴用戶該證書有問題。
- 頁(yè)面里所有資源都要改成走h(yuǎn)ttps ,包括:圖片、js、form表單等等,否則瀏覽器就會(huì)報(bào)警。
- 確保用到的CDN節(jié)點(diǎn)都支持HTTPS ,如果是自建IDC, 必須要保證全國(guó)甚至世界范圍的 idc 和 cdn 節(jié)點(diǎn),都得覆蓋到。
CDN 使用 https 常見的方案有:
- 網(wǎng)站主提供私鑰給 cdn,回源使用 http。
- cdn 使用公共域名,公共的證書,這樣資源的域名就不能自定義了?;卦词褂?http。
- 僅提供動(dòng)態(tài)加速,cdn 進(jìn)行 tcp 代理,不緩存內(nèi)容。
- 所有的開發(fā)、測(cè)試環(huán)境都要做https的升級(jí) ,確保各級(jí)環(huán)境保持同一套網(wǎng)絡(luò)協(xié)議。
性能方面的挑戰(zhàn)
做好以上的技術(shù)準(zhǔn)備后,我們還必須意識(shí)到實(shí)施HTTPS后帶來的性能問題:
1.網(wǎng)絡(luò)耗時(shí)增加,簡(jiǎn)單來說需要多幾次握手,網(wǎng)絡(luò)耗時(shí)變長(zhǎng),用戶從http跳轉(zhuǎn)到https還要一點(diǎn)時(shí)間。
對(duì)于這一塊的優(yōu)化,有Session ticket或者Session Cache等優(yōu)化方案,不過也是各有優(yōu)缺點(diǎn)。
2.計(jì)算耗時(shí)增加,需要更好機(jī)器性能,https要多做一次RSA校驗(yàn)。
對(duì)于這一塊的優(yōu)化,主要的方式是采用最新的openssl協(xié)議,使用硬件加速,優(yōu)先使用ECC密鑰等等。
安全方面的挑戰(zhàn)
關(guān)于這一塊,常見的安全隱患包含:降級(jí)攻擊和重新協(xié)商攻擊。
對(duì)于前者,攻擊者偽造或者修改"client hello "消息,使得客戶端和服務(wù)器之間使用比較弱的加密套件或者協(xié)議完成通信。對(duì)于重新協(xié)商攻擊,是攻擊者利用協(xié)商后安全算法偏弱,試圖竊取傳輸內(nèi)容,并且可以 不斷發(fā)起完全握手請(qǐng)求,觸發(fā)服務(wù)端進(jìn)行高強(qiáng)度計(jì)算并引發(fā)服務(wù)拒絕。
當(dāng)然,這一塊,在基礎(chǔ)廠商或者云產(chǎn)商的努力下,對(duì)于我們一般的業(yè)務(wù)用戶,幾乎不用關(guān)心協(xié)議層上面安全的問題。我在這里提出的目的,還是想說明一點(diǎn),安全問題一直都不能放松。
最后一點(diǎn)總結(jié)
切換成HTTPS是必然趨勢(shì),相信會(huì)有越來越多的站點(diǎn)加入進(jìn)來,而且完成后,它能給我們帶來的收益是巨大的。對(duì)于我們技術(shù)團(tuán)隊(duì)而言,在實(shí)行之前,一定要考慮清楚它背后的技術(shù)成本,并做好對(duì)應(yīng)的技術(shù)儲(chǔ)備,做好HTTP切換為HTTPS的上線流程,確保萬無一失。