理解 HTTPS 協議

oschina發表於2015-06-01

  最近我們看到很多站點使用 HTTPS 協議提供網頁服務。通常情況下我們都是在一些包含機密資訊的站點像銀行看到 HTTPS 協議。

  如果你訪問 google,檢視一下位址列,你會看到如下資訊

HTTPS protocol

  我們可以看到“https" 是綠色高亮顯示,並且前面有一個鎖標,表明網頁請求是通過 https 協議。

  HTTPS 是 HTTP 協議的一個版本,在瀏覽器和伺服器之間提供安全的資料傳輸。 

  瀏覽器和伺服器是通過 http 協議進行通訊,在使用 HTTP 協議時,客戶端向服務端提交表單資料時使用的是非加密方式。

  所以當瀏覽器和伺服器通訊的物理網路被侵入時,入侵者會得到網頁瀏覽器和伺服器之間傳輸的資訊。

HTTPS

  HTTP 的應用場景是我們不需要使用高安全級別的方法加密資料。但銀行這樣的應用會傳送像信用卡詳細資訊類的敏感資料,這會產生安全威脅。如果入侵者監視通訊通道,他可以輕易獲取到底層使用者的敏感資料。

  HTTPS 保證安全可靠通訊

  為了避免這樣的安全威脅,HTTPS 應運而生。HTTPS 是一個確保資料在 web 瀏覽器與 web 伺服器之間傳輸安全的協議。

  HTTPS 是由 HTTP 協議+SSL 協議構成。SSL 協議通過對資訊進行加密,為網路通訊提供安全保障。它運用了非對稱金鑰機制,這種機制是將公鑰自由對外分發,而私鑰只有資訊接收者才有。

  HTTPS 對比標準的HTTP協議的兩大優勢:

  • 它確保了使用者訪問的是正確的網站,這個網站是他原本打算訪問的而不是一些假冒網站。

  • 它確保了web瀏覽器與web伺服器之間通訊的內容是加密的,因此入侵者不能得到原始的通訊內容。

  所以在 HTTPS 中,SSL 起到了確保了資料在客戶端和 web 服務端傳輸安全。

  HTTPS 工作流程

  為了弄清 HTPPS 協議是怎麼工作的,我們首先應該明白加密、解密處理過程是怎麼工作的。

  加密就是把文字內容轉換成其他某種格式,這樣他人就無法解析原始內容。

  解密就是將之前我們轉換的密文再轉換回原始內容。

  加密和解密過程也可以用金鑰去加密和解密資訊。因此,如果資訊是用某個金鑰加密的,那麼使用同一個金鑰就能解密。這種方式稱為對稱金鑰機制,因為使用的是同一個金鑰進行加密和解密。

  假如我們用一個金鑰加密字串,另一個金鑰來解密字串,我們就把這個金鑰稱為非對稱金鑰。我們把用來加密字串的金鑰稱為公鑰,而用來解密字串的金鑰稱為私鑰。

ENCRYPTION IN HTTPS

  那麼現在我們明白了 HTTPS 是用來安全傳輸 web 服務端與 web 瀏覽器之間的資訊。這就是一個非常好的處理在傳輸資訊的時候使用 HTTPS 協議。

  當瀏覽器用 HTTPS 協議請求一個頁面時,下面的過程也會發生:

  1.瀏覽器向 server 發出 https 請求,server 監聽 443 埠,這個埠是 web server 用來監聽使用了 HTTPS 協議的請求。

  2.一旦 web 瀏覽器與 web 伺服器之間成功建立連線,SSL 握手流程就開始了。

  在握手流程中,瀏覽器和伺服器會針對資料的加密演算法進行協商並答成一致。過程如下:

  • 1. 瀏覽器向伺服器傳送一些自身的資訊(例如其支援的SSL版本);

  • 2. 伺服器響應類似資訊,例如通訊過程中將要使用的SSL版本;

  • 3. 伺服器會向瀏覽器傳送證書,證書中包含了加密資料的公鑰,釋出者資訊,有效期以及服務端唯一標識;

  • 4. 瀏覽器核實該證書,併傳送資訊通知伺服器證書已驗證完成;

  • 5. 瀏覽器向伺服器傳送“Change cipher spec”指令:瀏覽器將對資料進行加密;

  • 6. 伺服器向瀏覽器傳送“Change cipher spec”指令,服務端將要對待傳送的資料進行加密。

  當我們單擊chrome中小鎖標誌,我們就可以看到服務端傳送過來的數字證書。

Digital Certificate HTTPS

  3. 瀏覽器產生對稱的金鑰並通過伺服器公鑰將其加密,隨後將加密後的金鑰傳送到伺服器。這個對稱的金鑰用於在整個會話中進行加密和解密。

  我們知道數字證書是用來提供公鑰的。有兩個關鍵的術語用來理解數字證書。

  X.509 是一個定義數字證書格式的標準,它規定了證書中需要包含哪些資訊,例如下面:

  • 版本 指定 X.509 的版本

  • 序列號 唯一的一串數字用以區分證書

  • 證書釋出者名稱 CA

  • 公鑰

  CA(Certification authority)表示釋出該證書的機構。只有從釋出者那裡才能獲得證書。證書中通常會有釋出者的簽名用以保證有效性。

  原文地址:http://www.codecompiled.com/understanding-https-protocol/

相關文章