HTTP建立連接的過程點擊:HTTP三次握手、一次HTTP請求都發生了什么
- HTTPS基於HTTP使用 SSL/TLS加密。他們都是基於TCP/IP的
2 服務端,接收到客戶端所有的Cipher后與自身支持的對比,從中挑選出一套自己支持的加密算法和哈希算法,如果不支持則連接斷開
然后把自己的信息以證書的形式返回給客戶端 證書內容有:灣站地址、密匙公鑰、證書頒發機構、失效日期等
3 客戶端收到服務端響應后會做以下幾件事
a.驗證證書的合法性
驗證證書的合法性,證書中包含的網站地址是否與正在訪問的地址一致、證書是否過期等
證書驗證通過后,在瀏覽器的地址欄會加上一把小鎖(如樓主使用的Chrome瀏覽器)
b.生成隨機密碼
如果證書驗證通過,或者用戶接受了不受信任證書,然后瀏覽器會生成一串隨機數,然后用證書中的公鑰加密。
c.HASH握手信息
用最開始約定好的HASH方式,把握手消息取HASH值, 然后用 隨機數加密 “握手消息+握手消息HASH值(簽名)” 並一起發送給服務端
在這里之所以要取握手消息的HASH值,主要是把握手消息做一個簽名,用於驗證握手消息在傳輸過程中沒有被篡改過。
- 服務端拿到客戶端傳來的密文,用自己的私鑰來解密握手消息取出隨機數密碼,再用隨機數密碼 解密 握手消息與HASH值,並與傳過來的HASH值做對比確認是否一致。
然后用隨機密碼加密一段握手消息(握手消息+握手消息的HASH值 )給客戶端
5 客戶端用隨機數解密並計算握手消息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,之后所有的通信數據將由之前瀏覽器生成的隨機密碼並利用對稱加密算法進行加密
因為這串密鑰只有客戶端和服務端知道,所以即使中間請求被攔截也是沒法解密數據的,以此保證了通信的安全
非對稱加密算法:RSA,DSA/DSS 在客戶端與服務端相互驗證的過程中用的是對稱加密
對稱加密算法:AES,RC4,3DES 客戶端與服務端相互驗證通過后,以隨機數作為密鑰時,就是對稱加密
HASH算法:MD5,SHA1,SHA256 在確認握手消息沒有被篡改時