理解 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.codecompiled.com/understanding-https-protocol/
相關文章
- https協議的理解HTTP協議
- 深入理解HTTPS協議HTTP協議
- HTTPS 協議HTTP協議
- 配置https協議HTTP協議
- 什麼是HTTPS協議?為什麼要用HTTPS協議?HTTP協議
- HTTPS協議詳解HTTP協議
- Http與Https協議HTTP協議
- HTTP和HTTPS協議HTTP協議
- Flex使用Https協議FlexHTTP協議
- HTTP協議和HTTPS協議的異同點?HTTP協議
- 理解http協議HTTP協議
- 實現網站由http協議轉為https協議網站HTTP協議
- 理解ARP協議協議
- WebSphere配置https協議訪問WebHTTP協議
- nginx配置https協議訪問NginxHTTP協議
- 聊聊HTTPS和SSL/TLS協議HTTPTLS協議
- 深入理解OSPF協議協議
- 理解 OAuth2 協議OAuth協議
- 深入理解 HTTP 協議HTTP協議
- 理解 Redis 的 RESP 協議Redis協議
- 如何理解TCP/IP協議?TCP協議
- HTTPS 協議降級攻擊原理HTTP協議
- 關於wsgi協議的理解協議
- 深入理解TCP/IP協議TCP協議
- 深入理解 tcp 協議(一)TCP協議
- 深入理解HTTP協議(轉)HTTP協議
- Go語言實現HTTPS加密協議GoHTTP加密協議
- HTTPS的SSL協議速度慢嗎❓HTTP協議
- HTTPS協議的優缺點有哪些?HTTP協議
- python-flask搭建https安全協議PythonFlaskHTTP協議
- 大型網站的HTTPS實踐(一)——HTTPS協議和原理網站HTTP協議
- 大型網站的 HTTPS 實踐(一): HTTPS 協議和原理網站HTTP協議
- 大型網站的 HTTPS 實踐(一)—— HTTPS 協議和原理網站HTTP協議
- 計算機網路之十三:HTTPS協議計算機網路HTTP協議
- 真正“搞”懂HTTPS協議17之TLS握手HTTP協議TLS
- ios網路協議從http變成httpsiOS協議HTTP
- tomcat8配置https協議訪問TomcatHTTP協議
- 詳解HTTP&HTTPS協議及面試題HTTP協議面試題