前不久小米等六家互聯網公司發表聯合聲明,呼籲運營商打擊流量劫持。流量劫持最直觀的表現,就是網頁上被插入了一些亂七八糟的廣告/彈窗之類的內容。好比這樣:nginx
網頁右下角被插入了遊戲的廣告。apache
流量劫持整體來講屬於中間人攻擊(Man-in-the-Middle Attack,MITM)的一種,本質上攻擊者在通訊兩端之間對通訊內容進行嗅探和篡改,以達到插入數據和獲取關鍵信息的目的。目前互聯網上發生的流量劫持基本是兩種手段來實現的:瀏覽器
可以實施流量劫持的根本緣由,是 HTTP 協議沒法對通訊對方的身份進行校驗以及對數據完整性進行校驗。若是能解決這個問題,則流量劫持將沒法輕易發生。安全
關於流量劫持的更多危害案例,能夠參考:如何看待小米等聯合聲明:呼籲運營商嚴格打擊流量劫持?( https://www.zhihu.com/question/38861118 )服務器
HTTPS,是 HTTP over SSL 的意思,提到 HTTPS 就不得不先簡單描述一下 SSL/TLS 協議。SSL 協議是 Netscape 在 1995 年首次提出的用於解決傳輸層安全問題的網絡協議,其核心是基於公鑰密碼學理論實現了對服務器身份認證、數據的私密性保護以及對數據完整性的校驗等功能。1999 年 IETF 將 SSL 3.0 標準化,是爲 TLS 1.0 版本,目前 TLS 協議的最新版本是 1.2 版本,TLS 1.3 標準正在制定中。爲了方便,下文將 SSL/TLS 協議都簡稱爲 SSL 協議。網絡
SSL 協議在 HTTP 請求開始以前增長了握手的階段,其粗略流程以下圖所示:優化
因而可知,由於 SSL 協議提供了對服務器的身份認證,因此 DNS 劫持致使鏈接錯誤服務器的狀況將會被發現進而終止鏈接,最終致使 DNS 挾持攻擊沒法實現。此外 SSL 協議還提供數據的加密和完整性校驗,這就解決了關鍵信息被嗅探以及數據內容被修改的可能。網站
要將網站進行 HTTPS 支持以達到防劫持的效果,首先須要的是爲網站的域名搞一張證書。這個證書必須是由知名 CA 所簽發的,這是由於知名 CA 的根證書普遍的存在於大多數瀏覽器和操做系統中,所以能夠被客戶端用來校驗網站證書是否合法。阿里雲
傳統 CA 的證書籤發流程大致相同,基本上都是根據證書認證的級別,進行一系列不一樣流程的認證,而後認證經過後申請者繳納相應的費用就能夠或獲得證書。這個流程相對比較繁瑣,尤爲是對於我的和小型網站管理者來講搞起來也確實麻煩。這裏推薦一種新型的方法——使用 Let’s Encrypt 的自動化服務獲取免費的證書。加密
使用 Let’s Encrypt 的自動化服務獲取免費的證書
Let’s Encrypt 項目是由 ISRG 提供的免費 CA 服務,其主要目的是減小證書獲取的難度,將證書的簽發/續簽/做廢等操做進行自動化處理。Let’s Encrypt 的使用方法很是簡單,按照文檔中步驟操做便可。如需進一步瞭解如何使用 Let’s Encrypt 自動獲取免費證書,能夠參考:用 Let’s Encrypt 獲取免費證書 (
https://www.paulyang.cn/blog/archives/39?spm=5176.blog2666.yqblogcon1.11.i02BAh )
在得到到證書(以及對應的私鑰)以後,主要有以下幾種方法來使用:
阿里巴巴在 2015 年的雙 11 期間,成功的使用了全站範圍(包括淘寶、天貓等核心電商域名)的 HTTPS 爲廣大買家提供安全的購物體驗,這種體量的 HTTPS 服務在業界也極爲少見。阿里雲在進行電商業務的 HTTPS 改造時,在密碼學、SSL/TLS 協議以及 PKI 體系等領域進行了一系列的優化和創新,並在此過程當中積累了大量寶貴的經驗。
阿里雲作爲底層基礎設施的提供者,在阿里全站 HTTPS 化的過程當中提供了大量的技術支撐,阿里雲的 CDN 和 SLB 等產品在 HTTPS 的加速以及卸載等環節發揮了重要的做用。所以但願能將在淘寶/天貓業務上積累的 HTTPS 領域的經驗和成果,藉助阿里雲的平臺,讓更多人來使用,籍此但願跟多的互聯網流量可以 HTTPS 化,讓流量劫持再無可能。