關於HTTPS的七個誤解
本文詳細討論了關於HTTPS的七個誤解,誤解內容包括HTTPS無法快取、SSL證書很貴、HTTPS太慢等等,以下是原文,希望你可以更透徹地瞭解HTTPS。
誤解七:HTTPS無法快取
許多人以為,出於安全考慮,瀏覽器不會在本地儲存HTTPS快取。實際上,只要在HTTP頭中使用特定命令,HTTPS是可以快取的。
微軟的IE專案經理Eric Lawrence寫道:
“說來也許令人震驚,只要HTTP頭允許這樣做,所有版本的IE都快取HTTPS內容。比如,如果頭命令是Cache-Control: max-age=600,那麼這個網頁就將被IE快取10分鐘。IE的快取策略,與是否使用HTTPS協議無關。(其他瀏覽器在這方面的行為不一致,取決於你使用的版本,所以這裡不加以討論。)”
Firefox預設只在記憶體中快取HTTPS。但是,只要頭命令中有Cache-Control: Public,快取就會被寫到硬碟上。下面的圖片顯示,Firefox的硬碟快取中有HTTPS內容,頭命令正是Cache-Control:Public。
誤解六:SSL證書很貴
如果你在網上搜一下,就會發現很多便宜的SSL證書,大概10美元一年,這和一個.com域名的年費差不多。而且事實上,還能找到免費的SSL證書。
在效力上,便宜的證書當然會比大機構頒發的證書差一點,但是幾乎所有的主流瀏覽器都接受這些證書。
誤解五:HTTPS站點必須有獨享的IP地址
由於IPv4將要分配完畢,所以很多人關心這個問題。每個IP地址只能安裝一張SSL證書,這是毫無疑問的。但是,如果你使用子域名萬用字元SSL證書(wildcard SSL certificate,價格大約是每年125美元),就能在一個IP地址上部署多個HTTPS子域名。比如,https://www.httpwatch.com和https://store.httpwatch.com,就共享同一個IP地址。
另外,UCC(統一通訊證書,Unified Communications Certificate)支援一張證書同時匹配多個站點,可以是完全不同的域名。SNI(伺服器名稱指示,Server Name Indication)允許一個IP地址上多個域名安裝多張證書。伺服器端,Apache和Nginx支援該技術,IIS不支援;客戶端,IE 7+、Firefox 2.0+、Chrome 6+、Safari 2.1+和Opera 8.0+支援。
誤解四:轉移伺服器時要購買新證書
部署SSL證書,需要這樣幾步:
1. 在你的伺服器上,生成一個CSR檔案(SSL證書請求檔案,SSL Certificate Signing Request)。
2. 使用CSR檔案,購買SSL證書。
3. 安裝SSL證書。
這些步驟都經過精心設計,保證傳輸的安全,防止有人擷取或非法獲得證書。結果就是,你在第二步得到的證書不能用在另一臺伺服器上。如果你需要這樣做,就必須以其他格式輸出證書。
比如,IIS的做法是生成一個可以轉移的.pfx檔案,並加以密碼保護。
將這個檔案傳入其他伺服器,將可以繼續使用原來的SSL證書了。
誤解三:HTTPS太慢
使用HTTPS不會使你的網站變得更快(實際上有可能,請看下文),但是有一些技巧可以大大減少額外開銷。
首先,只要壓縮文字內容,就會降低解碼耗用的CPU資源。不過,對於當代CPU來說,這點開銷不值一提。
其次,建立HTTPS連線,要求額外的TCP往返,因此會新增一些傳送和接收的位元組。但是,從下圖可以看到,新增的位元組是很少的。
第一次開啟網頁的時候,HTTPS協議會比HTTP協議慢一點,這是因為讀取和驗證SSL證書的時間。下面是一張HTTP網頁開啟時間的瀑布圖。
同一張網頁使用HTTPS協議之後,開啟時間變長了。
建立連線的部分,大約慢了10%。但是,一旦有效的HTTPS連線建立起來,再重新整理網頁,兩種協議幾乎沒有區別。先是HTTP協議的重新整理表現:
然後是HTTPS協議:
某些使用者可能發現,HTTPS比HTTP更快一點。這會發生在一些大公司的內部區域網,因為通常情況下,公司的閘道器會擷取並分析所有的網路通訊。但是,當它遇到HTTPS連線時,它就只能直接放行,因為HTTPS無法被解讀。正是因為少了這個解讀的過程,所以HTTPS變得比較快。
誤解二:有了HTTPS,Cookie和查詢字串就安全了
雖然無法直接從HTTPS資料中讀取Cookie和查詢字串,但是你仍然需要使它們的值變得難以預測。
比如,曾經有一家英國銀行,直接使用順序排列的數值表示session id:
黑客可以先註冊一個賬戶,找到這個cookie,看到這個值的表示方法。然後,改動cookie,從而劫持其他人的session id。至於查詢字串,也可以通過類似方式洩漏。
誤解一:只有註冊登入頁,才需要HTTPS
這種想法很普遍。人們覺得,HTTPS可以保護使用者的密碼,此外就不需要了。Firefox瀏覽器新外掛Firesheep,證明了這種想法是錯的。我們可以看到,在Twitter和Facebook上,劫持其他人的session是非常容易的。
咖啡館的免費WiFi,就是一個很理想的劫持環境,因為兩個原因:
1. 這種WiFi通常不會加密,所以很容易監控所有流量。
2. WiFi通常使用NAT進行外網和內網的地址轉換,所有內網客戶端都共享一個外網地址。這意味著,被劫持的session,看上去很像來自原來的登入者。
以Twitter為例,它的登入頁使用了HTTPS,但是登入以後,其他頁面就變成了HTTP。這時,它的cookie裡的session值就暴露了。
也就是說,這些cookie是在HTTPS環境下建立的,但是卻在HTTP環境下傳輸。如果有人劫持到這些cookie,那他就能以你的身份在Twitter上發言了。
相關文章
- 七大關於DevOps的誤解,你中了幾招?dev
- 關於DevOps的七大誤解,99%的人都曾中過招!dev
- 關於電腦科學的50個誤解
- 【虹科乾貨】5個關於微服務的誤解微服務
- 關於 802.11ax 的七大認識誤區
- 關於開源軟體的七大錯誤認知
- 那些年關於HTTPS的事HTTP
- 圖解HTTP 七、確保Web安全的HTTPS圖解HTTPWeb
- 關於 IDP 的五大認知誤解
- 關於vuex的錯誤Vue
- 關於國密HTTPS 的那些事(二)HTTP
- 關於軟體測試七個核心問題
- 10個關於等級保護的認知誤區,你都瞭解嗎?
- 關於GAN的靈魂七問
- 關於 Angular 註解 @Injectable() 使用的一些誤區Angular
- 關於 curl 工作中一個小錯誤
- 關於威脅者和密碼安全的3個誤區密碼
- 關於電子遊戲,那些被人們誤解的事實遊戲
- 關於解決問題的幾個段位
- 策劃解讀:關於“暴擊”的誤解與數值的“偽隨機”隨機
- 關於802.11ax無線區域網標準的七大認識誤區
- 訪問 HTTPS 網站時的 SSL 錯誤解決方案HTTP網站
- 關於iOS HTTPS中間人攻擊iOSHTTP
- 關於HTTP和HTTPS常見問題HTTP
- 關於 Laravel 的一些個人見解Laravel
- 關於零信任的7個原則解釋
- 關於ESLint: Delete `␍`(prettier/prettier) 錯誤解決方案(3種)EsLintdelete
- 中科三方:關於SSL證書的幾個常見誤區
- 泡沫破裂? 2019年關於VR行業的常見誤解及解答VR行業
- 4個關於中臺最常見的誤區,用最通俗的話給你一次解釋清楚
- 關於Linux伺服器系統的七大優勢,你知道幾個?Linux伺服器
- 關於日本地域的兩點誤區
- 關於資料抓取很多新人的誤區
- 8.19 被誤解的關鍵字:gotoGo
- 要避免的七個災難性的雲端計算錯誤
- 5億個token之後,我們得出關於GPT的七條寶貴經驗GPT
- oracle關於ORA-12988錯誤Oracle
- 高防上傳HTTPS證書出現“引數格式錯誤”報錯的解決辦法 – HTTPS SSL 教程HTTP
- 關於洗牌演算法的錯誤認識演算法