Https詳解
概述
HTTPS,從字面上看,即在HTTP協議下加上一層SSL(安全套接字層 secure socket layer),對於上層應用來看,原來的傳送接收資料的流程不變,這便很好的相容了HTTP協議。
一、協議的加密流程
我們知道,非對稱加密是相較於對稱加密更為安全的一種加密方式,但是非對稱加密所需要耗費的計算資源也會隨之提高許多。所以https協議的基本原理就是,通過SSL/TLS握手安全的協商出一份對稱加密的金鑰,隨後傳輸的資料都採用該金鑰進行加解密。
1.1、SSL/TLS握手過程
1. Client Hello
握手第一步是客戶端向服務端傳送 Client Hello 訊息,這個訊息裡包含了一個客戶端生成的隨機數 Random1、客戶端支援的加密套件(Support Ciphers)和 SSL Version 等資訊。
2. Server Hello
第二步是服務端向客戶端傳送 Server Hello 訊息,這個訊息會從 Client Hello 傳過來的 Support Ciphers 裡確定一份加密套件,這個套件決定了後續加密和生成摘要時具體使用哪些演算法,另外還會生成一份隨機數 Random2。注意,至此客戶端和服務端都擁有了兩個隨機數(Random1+ Random2),這兩個隨機數會在後續生成對稱祕鑰時用到。
客戶端驗證
這一步是服務端將自己的證書下發給客戶端,讓客戶端驗證自己的身份,客戶端驗證通過後取出證書中的公鑰。
3. Certificate Verify
客戶端收到服務端傳來的證書後,先從 CA 驗證該證書的合法性,驗證通過後取出證書中的服務端公鑰,再生成一個隨機數 Random3,再用服務端公鑰非對稱加密 Random3 生成 PreMaster Key。
上面客戶端根據伺服器傳來的公鑰生成了 PreMaster Key,Client Key Exchange 就是將這個 key 傳給服務端,服務端再用自己的私鑰解出這個 PreMaster Key 得到客戶端生成的 Random3。至此,客戶端和服務端都擁有 Random1 + Random2 + Random3,兩邊再根據同樣的演算法就可以生成一份祕鑰,握手結束後的應用層資料都是使用這個祕鑰進行對稱加密。為什麼要使用三個隨機數呢?這是因為 SSL/TLS 握手過程的資料都是明文傳輸的,並且多個隨機數種子來生成祕鑰不容易被暴力破解出來。
4. 金鑰協商驗證
伺服器收到客戶端的第三個隨機數pre-master key之後,計算生成本次會話所用的"會話金鑰"。然後,向客戶端最後傳送下面資訊。
(1)編碼改變通知,表示隨後的資訊都將用雙方商定的加密方法和金鑰傳送。
(2)伺服器握手結束通知,表示伺服器的握手階段已經結束。這一項同時也是前面傳送的所有內容的hash值,用來供客戶端校驗。
至此,整個握手階段全部結束。接下來,客戶端與伺服器進入加密通訊,就完全是使用普通的HTTP協議,只不過用"會話金鑰"加密內容。
相關文章
- HTTP和HTTPS詳解HTTP
- HTTPS協議詳解HTTP協議
- Nginx如何配置HTTPS詳解NginxHTTP
- 詳解AFNetworking的HTTPS模組HTTP
- HSTS 詳解,讓 HTTPS 更安全HTTP
- HTTPS詳解-加密演算法(一)HTTP加密演算法
- 我的網站HTTPS改造全程詳解網站HTTP
- HTTPS詳解-加密演算法(二)完HTTP加密演算法
- 詳解如何給Tomcat配置Https/ssl證書TomcatHTTP
- HTTP與HTTPS詳解 海外代理IP介紹HTTP
- Https詳細分析HTTP
- HTTPS協議詳解(四):TLS/SSL握手過程HTTP協議TLS
- 詳解HTTP&HTTPS協議及面試題HTTP協議面試題
- 超詳細https握手與數字簽名講解HTTP
- 詳解Nginx伺服器和iOS的HTTPS安全通訊Nginx伺服器iOSHTTP
- 詳解SSL證書系列(8)瞭解HTTPS及和HTTP的區別HTTP
- 架構與思維:瞭解Http 和 Https的區別(圖文詳解)架構HTTP
- 完全圖解 HTTPS圖解HTTP
- 通俗講解 HTTPSHTTP
- nginx配置https詳細過程NginxHTTP
- 全面瞭解HTTP和HTTPSHTTP
- 用信鴿解釋httpsHTTP
- Https原理解析及詳細推演過程HTTP
- 用信鴿來解釋 HTTPSHTTP
- 清晰圖解深度分析HTTPS原理圖解HTTP
- 網站實現HTTPS的詳細流程介紹網站HTTP
- 通過信鴿來解釋 HTTPSHTTP
- 深入瞭解解析Https - 從瞭解到放棄HTTP
- 談一談我所瞭解的HTTPSHTTP
- http協議/cookie詳解/session詳解HTTP協議CookieSession
- 瞭解 HTTPS,讀這篇文章就夠了HTTP
- 用信鴿來講解HTTPS的知識HTTP
- 圖解HTTP 七、確保Web安全的HTTPS圖解HTTPWeb
- Java註解最全詳解(超級詳細)Java
- Java註解詳解Java
- Lombok 註解詳解Lombok
- @FeignClient註解詳解client
- Java 註解詳解Java