為什么要全站 HTTPS

satan_ljc 8年前發布 | 10K 次閱讀 網絡技術 HTTPS

隨著互聯網越來越深入的滲透到人們生活的方方面面,網絡安全變得越來越重要,不僅是人們上網要注重個人隱私和安全,企業同樣需要提供安全的互聯網服務。一個安全的網絡服務,會給用戶帶來愉悅和安寧,用戶對安全是無感的,這是最好的體驗。而不安全的服務,總是會給人們帶來災難。

黑暗森林法則是科幻小說作家劉慈欣在「三體」中提出的理論,世界就是一座黑暗森林,每個文明都是帶槍的獵人,像幽靈般潛行于林間,輕輕撥開擋路的樹枝,竭力不讓腳步發出一點兒聲音。他必須小心,因為林中到處都有與他一樣潛行的獵人,如果他發現了別的生命,能做的只有一件事:開槍消滅之。所以,在準備好之前,永遠不要暴露在公眾面前。

黑暗森林法則很適用于安全行業:一旦暴露在公眾的視野中,黑客就會對你很感興趣,就會找出來你的很多問題。從以往的經驗來看,在世界杯期間,彩票網站受攻擊很厲害;在熱錢涌入 P2P 小貸行業期間,整個P2P小貸行業受攻擊非常頻繁;現在資本進入了在線直播行業,可以預計,如果沒有安全保護措施,這個行業很快會經歷黑客的洗禮。你很難知道黑客會在什么時候光顧你。對于黑暗森林法則,低調可以保護你一時,但是無法永遠保護你,因為業務要發展,必然會暴露在公眾的眼中。

如何構建安全的互聯網服務呢?這是個宏大的話題,無數安全領域的先驅者都在為此努力。簡單來說,每個互聯網企業都該有自己獨立的安全部門,有安全員,建立自己的安全規范,讓程序員寫安全的代碼,跟蹤業界的安全和漏洞報告,及時升級服務器的補丁,定期進行眾測、滲透和模擬攻擊,把系統構建在高防 DDoS 的系統之上,等等。

這些還不夠,我們還需要構建安全的基礎設置,其中最重要的就是 HTTPS。

什么是 HTTPS 呢?簡單來說,HTTPS 就是 HTTP 的安全版本。HTTP 在早期設計的時候,更多的考慮了輕量級,靈活,減少網絡傳輸,如何定義數據傳輸的方法等,但是在安全層面考慮甚少,傳輸過程中所有的數據都是明文,而且不對傳輸雙方進行身份驗證,在傳輸鏈路的任意一個環節,第三方(代理服務器、路由器、Wi-Fi 熱點、移動運營商、統一網關出口、小區保安等)都可以拿到這些數據細細品味。基于 HTTP 協議在網絡上傳輸數據,就像是一位花枝招展的美女穿行在黑暗森林,手無縛雞之力卻又身懷寶藏,而森林中除了洪水猛獸,還有四十大盜,您說能安全嗎?

為了解決這個問題,保證隱私數據能在互聯網上安全的傳輸,網景公司設計了 SSL 協議(Secure Sockets Layer),于是 HTTPS 橫空出世了。它的全稱是超文本傳輸安全協議,在 HTTP 的基礎上通過 SSL/TLS 來對數據包進行加密,保證數據的安全。HTTPS 的目的主要有三個,一個是數據的保密性,你給別人送個郵包,但郵包是打了封印的,快遞員不知道包里裝的是啥。第二是數據的完整性,快遞員不知道郵包是啥,但可以掉包啊,HTTPS 發現了掉包的數據,可以拒收。第三就是身份驗證,HTTPS 可以保證郵包被正確的送到指定的接收方,而不是第三方。

HTTPS 的訪問過程大致如圖所示:

圖:from https://kaazing.com

瀏覽器發起一個 HTTPS 請求,這個請求會連接到 Web 服務器的443端口。服務器有一套證書,一般是受信任的證書機構頒發的,證書就是一對公鑰和私鑰。公鑰是一把鎖,而私鑰是解開公鑰的唯一鑰匙,只保存在服務器上。

服務器會把公鑰發給瀏覽器,其中包含了很多信息,比如頒發機構、過期時間、加密算法等。瀏覽器一看是證書來了,會自個去校驗這個證書是否是有效的,如果是無效的,就會告訴用戶證書有問題,別信。如果是有效證書,瀏覽器會生成一個隨機值,或者叫 one-time session key,然后用公鑰證書對其進行加密,然后再發給服務器。

服務器有鑰匙啊,可以解開這個加密的數據,得到這個隨機值,以后客戶端和服務端的通信就可以通過這個雙方都知道的隨機值來進行加密解密了。只要加密算法足夠強悍,一個非常安全的通道就建立起來了。

普通用戶通常上網的時候,并不會意識到訪問的是 HTTP 還是 HTTPS,比如我們在瀏覽器地址欄輸入 google.com,這時候訪問的是 HTTP,但 Google 會將請求轉發到 HTTPS 上,當我們加載頁面的時候后,會發現瀏覽器地址欄的左側有一個小鎖,點擊這個小鎖,你會發現相關的證書信息,這就表明,你訪問這個網站的數據是相對安全的。為什么是相對呢?因為沒有絕對的安全,即使采用了 HTTPS,也可以實現中間人攻擊,或者進行數據解密等,但是,目前 HTTPS 目前使用的加密算法需要巨大的計算量才能破解,尤其是進行了雙向認證的方式,用最強計算能力的計算機,也得破解幾十年,誰會在幾十年以后看馮老師幾十年前發出的訊息呢?

事實上,現在很多移動終端與云端的交互,都進行了雙向認證,也就是說,移動端也保留了一份類似隨機數的私鑰證書,用來和服務器端的證書進行驗證,以保證大家數據的安全。

目前,谷歌、騰訊、百度、阿里、銀聯、Paypal 等國內外一流互聯網公司都采用了全站 HTTPS,當然,由于我們在之前談到了直播網站,這里必須提一下斗魚直播,斗魚是國內首家,也是目前唯一全站升級到 HTTPS 的網絡直播平臺。

2016年7月,斗魚全站由 HTTP 協議升級到了 HTTPS,這種做法同樣是為了保證直播用戶的數據安全和隱私安全。但是全站實施 HTTPS 并不是加了一個 S 那么簡單,這里面需要投入巨大的技術研發成本、服務器和帶寬成本等等。

HTTPS 會帶來更多的網絡握手和消耗,如何提升訪問性能,如何優化證書鏈,如何增加高速連接,減少端口之間的跳轉等等。采用了 HTTPS 之后,所有的靜態資源都需要支持 HTTPS,如何讓 CDN 支持 HTTPS,如何應對 DDoS 的攻擊,同時,移動客戶端也需要與云端進行雙向證書認證。為了解決這些技術問題,斗魚在前端頁面、后端架構、協議特性、加密算法、流量調度、架構和運維、安全等方面都做了大量工作。除此之外,他們還需要承擔 CA 根節點證書費用、服務器和帶寬增加的成本。

實施了 HTTPS 的斗魚,能為用戶帶來什么好處呢?用戶可以獲得一個干凈安全的直播和觀看直播的體驗。比如彈幕,彈幕是直播中與主播溝通的工具,是直播不可分割的一部分,深受用戶關注和喜愛,因此非常容易受到惡意攻擊行為,發送廣告和非法信息。彈幕是開放給所有用戶的公共場所,任何人都可以發言,審核管理工作量巨大且復雜,受到惡意攻擊行為后會嚴重影響到大量用戶的體驗,對觀看直播造成惡劣的影響。在 HTTP 時代,我們甚至可以簡單的寫一段腳本就可以把直播間的所有彈幕信息抓下來,因為數據在網絡上是明文傳輸的。有了 HTTPS 的保障,無論是客戶端還是瀏覽器,都可以得到更好的用戶體驗。

事實上,在安全要求越來越嚴格的今天,未來的中大型網站,都會慢慢過渡到全棧 HTTPS 的時代,這個趨勢是不可阻擋的。如果你的網站依然是全站 HTTP 的,是時候改變了。

 

 

來自:http://mp.weixin.qq.com/s?__biz=MjM5ODQ2MDIyMA==&mid=2650712733&idx=1&sn=681e7413eeff0d6189df9c0ef6190e46&chksm=bec064ce89b7edd8427d3eb9d578c314bc209603a5c3e9c0657d6908fc1baae91a9c7c64d9a9&scene=0

 

 本文由用戶 satan_ljc 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!