HTTPS时代已来,你做好准备了吗?
摘要:?全站HTTPS時代的到來,這也是最近越來越多的網(wǎng)站上HTTPS和更換證書的原因。那么究竟什么是HTTPS?它為什么會提升安全系數(shù)?CDN HTTPS又將如何做到安全性與性能同時提升?作為用戶,又如何快速便捷的進行部署HTTPS全鏈路安全加速呢?本文將一一解答。
早在今年年初,Google在其安全博客上已經(jīng)表明,從7月開始,Chrome68會將所有的HTTP網(wǎng)站標(biāo)記為不安全。隨后,Mozilla也表明,Firefox瀏覽器也準(zhǔn)備將所有HTTP網(wǎng)站標(biāo)記為不安全。
目前,Chrome68早已發(fā)布,正如 Google之前表明一致,在訪問HTTP網(wǎng)站的時候,會在地址欄里顯示不安全的驚嘆號,比之前只顯示驚嘆號更加顯眼了。作為用戶難免心里會不安,因為我們并不知道這網(wǎng)站上顯示的內(nèi)容是不是服務(wù)器提供的內(nèi)容,我們的賬號或密碼是否會泄露。
?
縱觀全球,近年來使用HTTPS網(wǎng)站的增長趨勢還是很明顯的。下圖是Chrome瀏覽器加載HTTPS網(wǎng)站的趨勢,最上面這條線是美國,從2015年的不到50%,目前已經(jīng)超過80%,最下面這條是日本,2015-2016年比較平穩(wěn)的維持在25%左右,目前已經(jīng)超過60%。從網(wǎng)絡(luò)公開數(shù)據(jù)估算,國內(nèi)HTTPS的加載占比在40% 左右,可以預(yù)見到未來一兩年,會有越來越多的國內(nèi)網(wǎng)站將切換到HTTPS。
?
全站HTTPS時代的到來,這也是最近越來越多的網(wǎng)站上HTTPS和更換證書的原因。那么究竟什么是HTTPS?它為什么會提升安全系數(shù)?CDN HTTPS又將如何做到安全性與性能同時提升?作為用戶,又如何快速便捷的進行部署HTTPS全鏈路安全加速呢?本文將一一解答。
什么是HTTPS?
HTTPS里面的“S”代表“Security”,安全的HTTP。大家都知道HTTP是一個超文本傳輸協(xié)議,它的優(yōu)點是簡單、快速、靈活,它的缺點就是不安全,直接運行在TCP層之上,數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸是明文的,就可以被抓包并看到傳輸?shù)膬?nèi)容,存在非常大的安全隱患。
互聯(lián)網(wǎng)發(fā)展越來越快,網(wǎng)絡(luò)也越來越發(fā)達與復(fù)雜,在一些利益的驅(qū)動下,一些惡意的運營商經(jīng)常對用戶的HTTP請求做劫持和篡改,如果一個網(wǎng)站現(xiàn)在還在用HTTP為用戶提供服務(wù),那一定會經(jīng)常遇到網(wǎng)站被插入廣告、泄露數(shù)據(jù)等問題。
因為安全——我們需要HTTPS
解決以上問題,我們就需要加密傳輸,這里有兩種方法,一種方法是在HTTP的業(yè)務(wù)層做加密,這樣做會非常地耦合,不通用。
另一種就是用HTTPS,從網(wǎng)絡(luò)模型上看就是在TCP層和HTTP層加了一個SSL層,由這一層來為HTTP層做數(shù)據(jù)的加解密服務(wù):將HTTP層要發(fā)送的數(shù)據(jù)加密之后通過TCP來發(fā)送給對方,將接收到的加密數(shù)據(jù)解密之后交給HTTP,HTTP層不需關(guān)注加密和解密的細節(jié)而只需關(guān)注業(yè)務(wù)即可,這樣對應(yīng)用層來說是透明的,也便于客戶端和服務(wù)器的實現(xiàn)和升級。
HTTPS安全是由一套安全機制來保證的,主要包含這4個特性:機密性、完整性、真實性和不可否認(rèn)性。
?
- 機密性是指傳輸?shù)臄?shù)據(jù)是采用Session Key(會話密鑰)加密的,在網(wǎng)絡(luò)上是看不到明文的。
- 完整性是指為了避免網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)被非法篡改,使用MAC算法來保證消息的完整性。
- 真實性是指通信的對方是可信的,利用了PKI(Public Key Infrastructure 即『公鑰基礎(chǔ)設(shè)施』)來保證公鑰的真實性。
- 不可否認(rèn)性是這個消息就是你給我發(fā)的,無法偽裝和否認(rèn),是因為使用了簽名的技術(shù)來保證的。
有了安全,真的會損失性能嗎?
HTTPS如此安全,但仍然有部分用戶對HTTPS是恐懼的。主要原因是擔(dān)心上了HTTPS性能會變差,服務(wù)器扛不住壓力,客戶端要做SSL握手,增加首包時間,影響性能。
其實不然,阿里云CDN HTTPS進行了以下優(yōu)化,可以在保障安全的同時,將加載性能提升。
第一,HTTP/2
HTTP/2是二進制協(xié)議,相比HTTP/1.1的文本協(xié)議就有很大的優(yōu)勢,可以基于二進制協(xié)議做很多的優(yōu)化,比如多路復(fù)用、頭部壓縮、以及服務(wù)器推送。提高并發(fā)性能,提高傳輸效率。
下圖HTTP/1.1和HTTP/2的網(wǎng)絡(luò)加載瀑布圖,可以看出右邊 HTTP/2 的連接利用率更高,并發(fā)更高,不用像 HTTP/1.1 時有些請求在白白等待阻塞其他請求。而且可以看出左邊HTTP/1.1需要6個SSL 連接,右邊HTTP/2只需要1個SSL連接,減少昂貴的SSL請求,對服務(wù)器和客戶端都有好處。從測試結(jié)果來看,HTTP/2的總體加載時間更快,效果更好。
第二,SSL session復(fù)用
另一個性能優(yōu)化的方案是SSL session復(fù)用,它是提升ssl握手性能的主要手段之一。
有兩種session復(fù)用的方式:session id 和session ticket,了解 session id 復(fù)用的朋友可能會知道這種方案不支持分布式環(huán)境,session ticket支持分布式環(huán)境,但是session ticket的客戶端支持率并不高,主流還是session id的方式,然后我們做了定制開發(fā),支持了分布式緩存,上了這個優(yōu)化之后,本來3%左右的session id占比提升到了20%多,提高了7倍左右,握手時間從將近80ms降低到了不到70ms,效果還是挺明顯的,這樣可以提高服務(wù)器的性能,降低首包時間,提高用戶體驗。
第三,TLSv1.3即將發(fā)布
TLS1.3 TLS1.3相對于TLS1.2來說,主要的區(qū)別就是兩點:更快、更安全。在今年3月份,它被正式被IETF納入標(biāo)準(zhǔn)化,雖然目前只有Chrome和Firefox這兩個瀏覽器支持,但是未來會有更多的瀏覽器支持。
了解TLS1.2的朋友可能知道,TLS1.2完整握手需要2個RTT,而TLS1.3在完整握手時僅需要1個RTT,甚至做到0個RTT,所以TLS1.3會比TLS1.2更快。
TLS1.3只支持完全前向安全性的密鑰交換算法,簡單地說就是不支持像RSA這種不太安全的密鑰交換算法,因為使用這種密鑰交換算法,RSA私鑰泄露的話可以用來解密之前保存的SSL流量,不太安全。另外,TLS1.3的握手消息在ServerHello之后都是加密的,連傳輸?shù)淖C書消息都是加密的,所以TLS1.3比TLS1.2更安全。
早在2015年,天貓?zhí)詫氁呀?jīng)實現(xiàn)了全站HTTPS,其性能不降反升,效果比HTTP好很多,比如首頁提升了約20%左右,聚劃算提升了約30%,淘寶搜索也提升了約6%。所以可以看出,HTTPS其實并不慢,完全不必?fù)?dān)憂性能和用戶體驗的問題。
那么解決了以上擔(dān)憂,接下來就面臨著接入這一環(huán)。那么問題又來了,令人頭疼的證書怎樣申請?配置是否復(fù)雜難懂?出了問題如何排查呢?
開啟HTTPS三步走
我們先來看看CDN HTTPS的業(yè)務(wù)流程
不管用戶使用HTTP還是HTTPS訪問CDN,都要先做域名DNS解析,然后訪問到 CDN 的邊緣服務(wù)器,如果靜態(tài)資源緩存命中則直接響應(yīng)給客戶端,如果沒有緩存命中或者是動態(tài)資源請求的話就需要回源到源站服務(wù)器獲取。
在用戶這一側(cè),CDN提供了HTTP和HTTPS兩種訪問方式,開了HTTPS之后,HTTP也能訪問,如果想要實現(xiàn)全站HTTPS的話,CDN提供了301跳轉(zhuǎn)和HSTS的方式將HTTP訪問都重定向到HTTPS,這樣就可以實現(xiàn)HTTP自動跳轉(zhuǎn)到HTTPS,對用戶是無感知的。這樣就可以避免用戶這一側(cè)經(jīng)常發(fā)生的劫持、篡改、盜鏈等問題。比如一些視頻網(wǎng)站,為了收費會在鏈接后面加鑒權(quán)參數(shù),如果用HTTP,那用戶和CDN之間的部分惡意網(wǎng)絡(luò)運營商完全可以抓包拿到鑒權(quán)成功的鏈接,從而實現(xiàn)盜鏈,這對視頻網(wǎng)站的影響就比較大。
在CDN的內(nèi)部,默認(rèn)情況下也是全部走HTTPS,對有特殊需求的域名也可以走協(xié)議跟隨。
在源站服務(wù)器這一側(cè),用戶可以根據(jù)自己的服務(wù)器支持情況配置HTTP、HTTPS或者協(xié)議跟隨回源,推薦配置 HTTPS 回源,實現(xiàn)全鏈路 HTTPS,更安全。
第一步 一鍵申請 免費證書
下圖是CDN控制臺 HTTPS配置界面,可以看出HTTPS的配置非常簡單,只提供了證書、HTTP/2設(shè)置和強制跳轉(zhuǎn)這幾個配置,點擊HTTPS證書的修改配置按鈕之后就可以配置證書。
目前大多數(shù)CDN或者云計算廠商提供HTTPS服務(wù)都需要讓客戶上傳證書或者購買證書,用戶需要做一系列的工作,包括選擇CA廠商、選定購買途徑、選擇證書類型、支付證書費用、配合CA做校驗等等,辛苦申請下來的證書,格式多種多樣,配置十分復(fù)雜,私鑰也不知道怎么保管,證書到期前還需要去續(xù)簽和重新配置一遍,管理起來非常地麻煩。
大部分用戶對HTTPS的需求無非是安全和在瀏覽器上顯示小綠鎖就可以了,并不是特別關(guān)心證書是個什么東西、怎么申請以及怎么配置。所以,阿里云為了讓更多用戶更容易切到HTTPS,推出了免費證書的功能,對于那些不需要關(guān)心證書細節(jié)的用戶,就可以更便捷快速的使用HTTPS。
在HTTPS設(shè)置界面可以根據(jù)自己的需求配置證書,有三種證書類型可以選擇,可以選擇在阿里云CA證書服務(wù)上購買的云盾證書,也可以上傳已有的證書,另外一個就是免費證書,只需勾選同意授權(quán)阿里云申請免費證書和確認(rèn)就可以使用HTTPS了(因為阿里云目前還不是CA機構(gòu),所以不能簽發(fā)證書,需要用戶授權(quán)),如此一來,CDN就幫助用戶承擔(dān)了原本最為繁瑣的工作。
同時,有幾點需要注意:
第二步 動態(tài)配置 秒級生效
下圖為CDN-HTTPS架構(gòu), 用戶在控制臺上選擇證書,一鍵開啟HTTPS。
這些證書/私鑰以及其他HTTPS配置會同步到阿里云證書管理系統(tǒng),并不是同步到所有的CDN邊緣節(jié)點服務(wù)器,當(dāng)有HTTPS請求到邊緣節(jié)點服務(wù)器時,再去證書管理系統(tǒng)獲取證書,并緩存在本機,做一下證書的切換,從而實現(xiàn)配置的熱加載,然后就可以完成SSL握手。
沒有全部同步到邊緣節(jié)點服務(wù)器的原因,一是機器越多同步越需要時間生效時間越慢,二是沒有必要,同步到那些沒有訪問的機器白白浪費機器內(nèi)存。
第三步 監(jiān)控告警 排查問題
當(dāng)HTTPS開啟后,我們需要對業(yè)務(wù)進行監(jiān)控。下圖所展現(xiàn)的就是阿里云所進行實時統(tǒng)計的錯誤類型,以及根據(jù)錯誤類型進行的實時告警。如果沒有這樣的告警系統(tǒng),業(yè)務(wù)往往會產(chǎn)生長時間中斷。而且阿里云HTTPS的配置也是秒級配置、熱加載和秒級生效,用戶可以快速地響應(yīng)問題,解決問題。
可以看到,在CDN控制臺進行HTTPS的開啟和后續(xù)使用都是很便捷和靈活的,歡迎大家使用阿里云CDN的HTTPS,邁入HTTPS時代。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的HTTPS时代已来,你做好准备了吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 舞动的桥 阿里云首个百万IOPS云盘的背
- 下一篇: 高速通道-冗余物理专线接入-健康检查配置