HTTPS時代已來,你作好準備了嗎?

早在今年年初,Google在其安全博客上已經代表,從7月開始,Chrome68會將全部的HTTP網站標記爲不安全。隨後,Mozilla也代表,Firefox瀏覽器也準備將全部HTTP網站標記爲不安全。算法

目前,Chrome68早已發佈,正如 Google以前代表一致,在訪問HTTP網站的時候,會在地址欄裏顯示不安全的驚歎號,比以前只顯示驚歎號更加顯眼了。做爲用戶不免內心會不安,由於咱們並不知道這網站上顯示的內容是否是服務器提供的內容,咱們的帳號或密碼是否會泄露。瀏覽器

 

image

縱觀全球,近年來使用HTTPS網站的增加趨勢仍是很明顯的。下圖是Chrome瀏覽器加載HTTPS網站的趨勢,最上面這條線是美國,從2015年的不到50%,目前已經超過80%,最下面這條是日本,2015-2016年比較平穩的維持在25%左右,目前已經超過60%。從網絡公開數據估算,國內HTTPS的加載佔比在40% 左右,能夠預見到將來一兩年,會有愈來愈多的國內網站將切換到HTTPS。緩存

 

image

全站HTTPS時代的到來,這也是最近愈來愈多的網站上HTTPS和更換證書的緣由。那麼究竟什麼是HTTPS?它爲何會提高安全係數?CDN HTTPS又將如何作到安全性與性能同時提高?做爲用戶,又如何快速便捷的進行部署HTTPS全鏈路安全加速呢?本文將一一解答。安全

什麼是HTTPS?

HTTPS裏面的「S」表明「Security」,安全的HTTP。你們都知道HTTP是一個超文本傳輸協議,它的優勢是簡單、快速、靈活,它的缺點就是不安全,直接運行在TCP層之上,數據在網絡上的傳輸是明文的,就能夠被抓包並看到傳輸的內容,存在很是大的安全隱患。性能優化

互聯網發展愈來愈快,網絡也愈來愈發達與複雜,在一些利益的驅動下,一些惡意的運營商常常對用戶的HTTP請求作劫持和篡改,若是一個網站如今還在用HTTP爲用戶提供服務,那必定會常常遇到網站被插入廣告、泄露數據等問題。服務器

由於安全——咱們須要HTTPS

解決以上問題,咱們就須要加密傳輸,這裏有兩種方法,一種方法是在HTTP的業務層作加密,這樣作會很是地耦合,不通用。網絡

另外一種就是用HTTPS,從網絡模型上看就是在TCP層和HTTP層加了一個SSL層,由這一層來爲HTTP層作數據的加解密服務:將HTTP層要發送的數據加密以後經過TCP來發送給對方,將接收到的加密數據解密以後交給HTTP,HTTP層不需關注加密和解密的細節而只需關注業務便可,這樣對應用層來講是透明的,也便於客戶端和服務器的實現和升級。session

HTTPS安全是由一套安全機制來保證的,主要包含這4個特性:機密性、完整性、真實性和不能否認性。架構

 

image

  • 機密性是指傳輸的數據是採用Session Key(會話密鑰)加密的,在網絡上是看不到明文的。
  • 完整性是指爲了不網絡中傳輸的數據被非法篡改,使用MAC算法來保證消息的完整性。
  • 真實性是指通訊的對方是可信的,利用了PKI(Public Key Infrastructure 即『公鑰基礎設施』)來保證公鑰的真實性。
  • 不能否認性是這個消息就是你給我發的,沒法假裝和否定,是由於使用了簽名的技術來保證的。

有了安全,真的會損失性能嗎?

HTTPS如此安全,但仍然有部分用戶對HTTPS是恐懼的。主要緣由是擔憂上了HTTPS性能會變差,服務器扛不住壓力,客戶端要作SSL握手,增長首包時間,影響性能。併發

其實否則,阿里雲CDN HTTPS進行了如下優化,能夠在保障安全的同時,將加載性能提高。

第一,HTTP/2

HTTP/2是二進制協議,相比HTTP/1.1的文本協議就有很大的優點,能夠基於二進制協議作不少的優化,好比多路複用、頭部壓縮、以及服務器推送。提升併發性能,提升傳輸效率。

下圖HTTP/1.1和HTTP/2的網絡加載瀑布圖,能夠看出右邊 HTTP/2 的鏈接利用率更高,併發更高,不用像 HTTP/1.1 時有些請求在白白等待阻塞其餘請求。並且能夠看出左邊HTTP/1.1須要6個SSL 鏈接,右邊HTTP/2只須要1個SSL鏈接,減小昂貴的SSL請求,對服務器和客戶端都有好處。從測試結果來看,HTTP/2的整體加載時間更快,效果更好。

image

第二,SSL session複用

另外一個性能優化的方案是SSL session複用,它是提高ssl握手性能的主要手段之一。

有兩種session複用的方式:session id 和session ticket,瞭解 session id 複用的朋友可能會知道這種方案不支持分佈式環境,session ticket支持分佈式環境,可是session ticket的客戶端支持率並不高,主流仍是session id的方式,而後咱們作了定製開發,支持了分佈式緩存,上了這個優化以後,原本3%左右的session id佔比提高到了20%多,提升了7倍左右,握手時間從將近80ms下降到了不到70ms,效果仍是挺明顯的,這樣能夠提升服務器的性能,下降首包時間,提升用戶體驗。

image

第三,TLSv1.3即將發佈

TLS1.3 TLS1.3相對於TLS1.2來講,主要的區別就是兩點:更快、更安全。在今年3月份,它被正式被IETF歸入標準化,雖然目前只有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以後都是加密的,連傳輸的證書消息都是加密的,因此TLS1.3比TLS1.2更安全。

早在2015年,天貓淘寶已經實現了全站HTTPS,其性能不降反升,效果比HTTP好不少,好比首頁提高了約20%左右,聚划算提高了約30%,淘寶搜索也提高了約6%。因此能夠看出,HTTPS其實並不慢,徹底沒必要擔心性能和用戶體驗的問題。

那麼解決了以上擔心,接下來就面臨着接入這一環。那麼問題又來了,使人頭疼的證書怎樣申請?配置是否複雜難懂?出了問題如何排查呢?

開啓HTTPS三步走

咱們先來看看CDN HTTPS的業務流程

image

無論用戶使用HTTP仍是HTTPS訪問CDN,都要先作域名DNS解析,而後訪問到 CDN 的邊緣服務器,若是靜態資源緩存命中則直接響應給客戶端,若是沒有緩存命中或者是動態資源請求的話就須要回源到源站服務器獲取。

在用戶這一側,CDN提供了HTTP和HTTPS兩種訪問方式,開了HTTPS以後,HTTP也能訪問,若是想要實現全站HTTPS的話,CDN提供了301跳轉和HSTS的方式將HTTP訪問都重定向到HTTPS,這樣就能夠實現HTTP自動跳轉到HTTPS,對用戶是無感知的。這樣就能夠避免用戶這一側常常發生的劫持、篡改、盜鏈等問題。好比一些視頻網站,爲了收費會在連接後面加鑑權參數,若是用HTTP,那用戶和CDN之間的部分惡意網絡運營商徹底能夠抓包拿到鑑權成功的連接,從而實現盜鏈,這對視頻網站的影響就比較大。

在CDN的內部,默認狀況下也是所有走HTTPS,對有特殊需求的域名也能夠走協議跟隨。

在源站服務器這一側,用戶能夠根據本身的服務器支持狀況配置HTTP、HTTPS或者協議跟隨回源,推薦配置 HTTPS 回源,實現全鏈路 HTTPS,更安全。

第一步 一鍵申請 免費證書

下圖是CDN控制檯 HTTPS配置界面,能夠看出HTTPS的配置很是簡單,只提供了證書、HTTP/2設置和強制跳轉這幾個配置,點擊HTTPS證書的修改配置按鈕以後就能夠配置證書。
image

目前大多數CDN或者雲計算廠商提供HTTPS服務都須要讓客戶上傳證書或者購買證書,用戶須要作一系列的工做,包括選擇CA廠商、選定購買途徑、選擇證書類型、支付證書費用、配合CA作校驗等等,辛苦申請下來的證書,格式多種多樣,配置十分複雜,私鑰也不知道怎麼保管,證書到期前還須要去續簽和從新配置一遍,管理起來很是地麻煩。

大部分用戶對HTTPS的需求無非是安全和在瀏覽器上顯示小綠鎖就能夠了,並非特別關心證書是個什麼東西、怎麼申請以及怎麼配置。因此,阿里云爲了讓更多用戶更容易切到HTTPS,推出了免費證書的功能,對於那些不須要關心證書細節的用戶,就能夠更便捷快速的使用HTTPS。

image

在HTTPS設置界面能夠根據本身的需求配置證書,有三種證書類型能夠選擇,能夠選擇在阿里雲CA證書服務上購買的雲盾證書,也能夠上傳已有的證書,另一個就是免費證書,只需勾選贊成受權阿里雲申請免費證書和確認就可使用HTTPS了(由於阿里雲目前還不是CA機構,因此不能簽發證書,須要用戶受權),如此一來,CDN就幫助用戶承擔了本來最爲繁瑣的工做。

同時,有幾點須要注意:

  1. 在使用HTTPS免費證書以前,須要確保用戶的域名CNAME切到了阿里雲CDN,否則CDN無法配合CA機構去作校驗,校驗失敗的話CA也不會給這個域名簽發證書。
  2. 須要注意域名的CAA記錄,CAA記錄的目的是防止其餘CA誤簽證書,域名的DNS裏面沒有CAA記錄還好,要有CAA記錄的話得把digicert加進去才能申請證書成功,這是由於免費證書是由digicert這個CA機構來簽發的。
  3. 由於是免費證書,因此目前只支持1個域名,還不支持泛域名證書。證書的有效期是1年,到期以前咱們會自動續簽和自動更新證書。
  4. www 域名要使用免費證書功能的話須要注意頂級域名也要切到CDN,這是由於www 域名免費證書自動綁定頂級域名(好比:www.a.com 開通免費證書會綁定兩個域名:www.a.com和a.com)。
  5. 這樣一來,用戶就徹底無需關注證書的細節了。只需關注HTTPS功能是否可用,瀏覽器地址欄上是否是已經有了綠色的小鎖,在SSL labs上測試的安全等級是否是A就能夠了(固然在阿里雲CDN上的域名 HTTPS 的安全等級都是A)。

第二步 動態配置 秒級生效

下圖爲CDN-HTTPS架構, 用戶在控制檯上選擇證書,一鍵開啓HTTPS。
image

這些證書/私鑰以及其餘HTTPS配置會同步到阿里雲證書管理系統,並非同步到全部的CDN邊緣節點服務器,當有HTTPS請求到邊緣節點服務器時,再去證書管理系統獲取證書,並緩存在本機,作一下證書的切換,從而實現配置的熱加載,而後就能夠完成SSL握手。

沒有所有同步到邊緣節點服務器的緣由,一是機器越多同步越須要時間生效時間越慢,二是沒有必要,同步到那些沒有訪問的機器白白浪費機器內存。

第三步 監控告警 排查問題

當HTTPS開啓後,咱們須要對業務進行監控。下圖所展示的就是阿里雲所進行實時統計的錯誤類型,以及根據錯誤類型進行的實時告警。若是沒有這樣的告警系統,業務每每會產生長時間中斷。並且阿里雲HTTPS的配置也是秒級配置、熱加載和秒級生效,用戶能夠快速地響應問題,解決問題。
image

能夠看到,在CDN控制檯進行HTTPS的開啓和後續使用都是很便捷和靈活的,歡迎你們使用阿里雲CDN的HTTPS,邁入HTTPS時代。

相關文章
相關標籤/搜索