HTTPS建立連接的過程


HTTP建立連接的過程點擊:HTTP三次握手、一次HTTP請求都發生了什么

一、HTTPS
  HTTP是超文本傳輸協議。HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全。為了保證這些隱私數據能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用於對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定義在RFC 6101中,之后IETF對SSL 3.0進行了升級,於是出現了TLS(Transport Layer Security) 1.0,定義在RFC 2246。實際上我們現在的HTTPS都是用的TLS協議,但是由於SSL出現的時間比較早,並且依舊被現在瀏覽器所支持,因此SSL依然是HTTPS的代名詞,但無論是TLS還是SSL都是上個世紀的事情,SSL最后一個版本是3.0,今后TLS將會繼承SSL優良血統繼續為我們進行加密服務。目前TLS的版本是1.2,定義在RFC 5246中,暫時還沒有被廣泛的使用
  • HTTPS基於HTTP使用 SSL/TLS加密。他們都是基於TCP/IP的
     
二、HTTPS驗證原理
  ![](https://img2018.cnblogs.com/blog/1226829/201810/1226829-20181008195425015-1141725576.png)

 

2.1 驗證流程
  1 客戶端發起一個https的請求,把自身支持的一系列Cipher Suite(密鑰算法套件,簡稱Cipher)(自己支持的一套加密算法和哈希算法)發送給服務端

2 服務端,接收到客戶端所有的Cipher后與自身支持的對比,從中挑選出一套自己支持的加密算法和哈希算法,如果不支持則連接斷開
 
然后把自己的信息以證書的形式返回給客戶端 證書內容有:灣站地址、密匙公鑰、證書頒發機構、失效日期等

3 客戶端收到服務端響應后會做以下幾件事
 
a.驗證證書的合法性
 
驗證證書的合法性,證書中包含的網站地址是否與正在訪問的地址一致、證書是否過期等
 
證書驗證通過后,在瀏覽器的地址欄會加上一把小鎖(如樓主使用的Chrome瀏覽器)
 
b.生成隨機密碼
 
如果證書驗證通過,或者用戶接受了不受信任證書,然后瀏覽器會生成一串隨機數,然后用證書中的公鑰加密。
 
c.HASH握手信息
 
用最開始約定好的HASH方式,把握手消息取HASH值, 然后用 隨機數加密 “握手消息+握手消息HASH值(簽名)” 並一起發送給服務端
 
在這里之所以要取握手消息的HASH值,主要是把握手消息做一個簽名,用於驗證握手消息在傳輸過程中沒有被篡改過。

  1. 服務端拿到客戶端傳來的密文,用自己的私鑰來解密握手消息取出隨機數密碼,再用隨機數密碼 解密 握手消息與HASH值,並與傳過來的HASH值做對比確認是否一致。
     
    然后用隨機密碼加密一段握手消息(握手消息+握手消息的HASH值 )給客戶端

5 客戶端用隨機數解密並計算握手消息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,之后所有的通信數據將由之前瀏覽器生成的隨機密碼並利用對稱加密算法進行加密
 
因為這串密鑰只有客戶端和服務端知道,所以即使中間請求被攔截也是沒法解密數據的,以此保證了通信的安全
 
非對稱加密算法:RSA,DSA/DSS 在客戶端與服務端相互驗證的過程中用的是對稱加密
 
對稱加密算法:AES,RC4,3DES 客戶端與服務端相互驗證通過后,以隨機數作為密鑰時,就是對稱加密
 
HASH算法:MD5,SHA1,SHA256 在確認握手消息沒有被篡改時


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM