理解 HTTPS 協議
最近我們看到很多站點使用 HTTPS 協議提供網頁服務。通常情況下我們都是在一些包含機密信息的站點像銀行看到 HTTPS 協議。
如果你訪問 google,查看一下地址欄,你會看到如下信息
我們可以看到“https" 是綠色高亮顯示,并且前面有一個鎖標,表明網頁請求是通過 https 協議。
HTTPS 是 HTTP 協議的一個版本,在瀏覽器和服務器之間提供安全的數據傳輸。
瀏覽器和服務器是通過 http 協議進行通信,在使用 HTTP 協議時,客戶端向服務端提交表單數據時使用的是非加密方式。
所以當瀏覽器和服務器通信的物理網絡被侵入時,入侵者會得到網頁瀏覽器和服務器之間傳輸的信息。

HTTP 的應用場景是我們不需要使用高安全級別的方法加密數據。但銀行這樣的應用會發送像信用卡詳細信息類的敏感數據,這會產生安全威脅。如果入侵者監視通信信道,他可以輕易獲取到底層用戶的敏感數據。
HTTPS 保證安全可靠通信
為了避免這樣的安全威脅,HTTPS 應運而生。HTTPS 是一個確保數據在 web 瀏覽器與 web 服務器之間傳輸安全的協議。
HTTPS 是由 HTTP 協議+SSL 協議構成。SSL 協議通過對信息進行加密,為網絡通信提供安全保障。它運用了非對稱密鑰機制,這種機制是將公鑰自由對外分發,而私鑰只有信息接收者才有。
HTTPS 對比標準的HTTP協議的兩大優勢:
-
它確保了用戶訪問的是正確的網站,這個網站是他原本打算訪問的而不是一些假冒網站。
-
它確保了web瀏覽器與web服務器之間通信的內容是加密的,因此入侵者不能得到原始的通信內容。
所以在 HTTPS 中,SSL 起到了確保了數據在客戶端和 web 服務端傳輸安全。
HTTPS 工作流程
為了弄清 HTPPS 協議是怎么工作的,我們首先應該明白加密、解密處理過程是怎么工作的。
加密就是把文本內容轉換成其他某種格式,這樣他人就無法解析原始內容。
解密就是將之前我們轉換的密文再轉換回原始內容。
加密和解密過程也可以用密鑰去加密和解密信息。因此,如果信息是用某個密鑰加密的,那么使用同一個密鑰就能解密。這種方式稱為對稱密鑰機制,因為使用的是同一個密鑰進行加密和解密。
假如我們用一個密鑰加密字符串,另一個密鑰來解密字符串,我們就把這個密鑰稱為非對稱密鑰。我們把用來加密字符串的密鑰稱為公鑰,而用來解密字符串的密鑰稱為私鑰。

那么現在我們明白了 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中小鎖標志,我們就可以看到服務端發送過來的數字證書。
3. 瀏覽器產生對稱的密鑰并通過服務器公鑰將其加密,隨后將加密后的密鑰發送到服務器。這個對稱的密鑰用于在整個會話中進行加密和解密。
我們知道數字證書是用來提供公鑰的。有兩個關鍵的術語用來理解數字證書。
X.509 是一個定義數字證書格式的標準,它規定了證書中需要包含哪些信息,例如下面:
-
版本 指定 X.509 的版本
-
序列號 唯一的一串數字用以區分證書
-
證書發布者名稱 CA
-
公鑰
CA(Certification authority)表示發布該證書的機構。只有從發布者那里才能獲得證書。證書中通常會有發布者的簽名用以保證有效性。
本文地址:http://www.oschina.net/translate/understanding-https-protocol
原文地址:http://www.codecompiled.com/understanding-https-protocol/
