如何使用HTTPS防止流量劫持

何爲流量劫持

前不久小米等六家互聯網公司發表聯合聲明,呼籲運營商打擊流量劫持。流量劫持最直觀的表現,就是網頁上被插入了一些亂七八糟的廣告/彈窗之類的內容。好比這樣:nginx

網頁右下角被插入了遊戲的廣告。apache

流量劫持整體來講屬於中間人攻擊(Man-in-the-Middle Attack,MITM)的一種,本質上攻擊者在通訊兩端之間對通訊內容進行嗅探和篡改,以達到插入數據和獲取關鍵信息的目的。目前互聯網上發生的流量劫持基本是兩種手段來實現的:瀏覽器

  • 域名劫持:經過劫持掉域名的 DNS 解析結果,將 HTTP 請求劫持到特定 IP 上,使得客戶端和攻擊者的服務器創建 TCP 鏈接,而非和目標服務器直接鏈接,這樣攻擊者就能夠對內容進行竊取或篡改。在極端的狀況下甚至攻擊者可能僞造目標網站頁面進行釣魚攻擊。
  • 直接流量修改:在數據通路上對頁面進行固定的內容插入,好比廣告彈窗等。在這種狀況下,雖然客戶端和服務器是直接創建的鏈接,可是數據內容依然可能遭到野蠻破壞。

可以實施流量劫持的根本緣由,是 HTTP 協議沒法對通訊對方的身份進行校驗以及對數據完整性進行校驗。若是能解決這個問題,則流量劫持將沒法輕易發生。安全

關於流量劫持的更多危害案例,能夠參考:如何看待小米等聯合聲明:呼籲運營商嚴格打擊流量劫持?( https://www.zhihu.com/question/38861118 )服務器

HTTPS 如何防止劫持

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 握手階段,客戶端瀏覽器會認證服務器的身份,這是經過「證書」來實現的,證書由證書權威(CA)爲某個域名簽發,能夠理解爲網站的身份證件,客戶端須要對這個證件進行認證,須要肯定該證書是否屬於目標網站並確認證書自己是否有效。最後在握手階段,通訊的雙方還會協商出一個用於加密和解密的會話密鑰。
  • SSL 握手階段結束以後,服務器和客戶端使用協商出的會話密鑰對交互的數據進行加密/解密操做,對於 HTTP 協議來講,就是將 HTTP 請求和應答通過加密以後再發送到網絡上。

因而可知,由於 SSL 協議提供了對服務器的身份認證,因此 DNS 劫持致使鏈接錯誤服務器的狀況將會被發現進而終止鏈接,最終致使 DNS 挾持攻擊沒法實現。此外 SSL 協議還提供數據的加密和完整性校驗,這就解決了關鍵信息被嗅探以及數據內容被修改的可能。網站

如何部署 HTTPS

要將網站進行 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 )

在得到到證書(以及對應的私鑰)以後,主要有以下幾種方法來使用:

  1. 直接在 Web 服務器上部署證書和私鑰,相關 apache 或 nginx 都有大量的文檔說明,在此就不贅述了。
  2. 在服務器集羣的接入層/反向代理處部署證書和私鑰,例如阿里雲的 CDN, SLB 和高防 IP 等產品均提供 HTTPS 支持,能夠直接上傳證書和私鑰就能夠實現網站的 HTTPS 改造。

阿里雲的 HTTPS 支持

阿里巴巴在 2015 年的雙 11 期間,成功的使用了全站範圍(包括淘寶、天貓等核心電商域名)的 HTTPS 爲廣大買家提供安全的購物體驗,這種體量的 HTTPS 服務在業界也極爲少見。阿里雲在進行電商業務的 HTTPS 改造時,在密碼學、SSL/TLS 協議以及 PKI 體系等領域進行了一系列的優化和創新,並在此過程當中積累了大量寶貴的經驗。

阿里雲作爲底層基礎設施的提供者,在阿里全站 HTTPS 化的過程當中提供了大量的技術支撐,阿里雲的 CDN 和 SLB 等產品在 HTTPS 的加速以及卸載等環節發揮了重要的做用。所以但願能將在淘寶/天貓業務上積累的 HTTPS 領域的經驗和成果,藉助阿里雲的平臺,讓更多人來使用,籍此但願跟多的互聯網流量可以 HTTPS 化,讓流量劫持再無可能。

相關文章
相關標籤/搜索