簡介
HTTPS是在HTTP的基礎(chǔ)上和ssl/tls證書結(jié)合起來的一種協(xié)議,保證了傳輸過程中的安全性,減少了被惡意劫持的可能.很好的解決了解決了http的三個缺點(被監(jiān)聽,、被篡改,、被偽裝)
對稱加密和非對稱加密
-
對稱加密
-
非對稱加密
- 非對稱加密將密鑰分為公鑰和私鑰,公鑰可以公開,私鑰需要保密,客戶端公鑰加密的數(shù)據(jù),服務(wù)端可以通過私鑰來解密
建立連接
-
HTTP和HTTPS都需要在建立連接的基礎(chǔ)上來進(jìn)行數(shù)據(jù)傳輸,是基本操作
-
當(dāng)客戶在瀏覽器中輸入網(wǎng)址的并且按下回車,瀏覽器會在瀏覽器DNS緩存,本地DNS緩存,和Hosts中尋找對應(yīng)的記錄,如果沒有獲取到則會請求DNS服務(wù)來獲取對應(yīng)的ip
-
當(dāng)獲取到ip后,tcp連接會進(jìn)行三次握手建立連接
tcp的三次揮手和四次揮手
過程簡圖
三次揮手(建立連接)
-
第一次:建立連接時,客戶端發(fā)送SYN包(syn=j)到服務(wù)器,,并進(jìn)入SYN_SEND狀態(tài),,等待服務(wù)器確認(rèn);
-
第二次:服務(wù)器收到SYN包,,向客戶端返回ACK(ack=j+1),,同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,,此時服務(wù)器進(jìn)入SYN_RCVD狀態(tài),;
-
第三次:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),,此包發(fā)送完畢,,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手,。
-
完成三次握手,,客戶端與服務(wù)器開始傳送數(shù)據(jù),也就是ESTABLISHED狀態(tài)。
-
三次握手保證了不會建立無效的連接,,從而浪費(fèi)資源,。
四次揮手(斷開連接)
-
第一次: TCP客戶端發(fā)送一個FIN,用來關(guān)閉客戶到服務(wù)器的數(shù)據(jù)傳送,。
-
第二次:服務(wù)器收到這個FIN,,它發(fā)回一個ACK,確認(rèn)序號為收到的序號加1,。和SYN一樣,一個FIN將占用一個序號,。
-
第三次:服務(wù)器關(guān)閉客戶端的連接,,發(fā)送一個FIN給客戶端。
-
第四次:客戶端發(fā)回ACK報文確認(rèn),,并將確認(rèn)序號設(shè)置為收到序號加1,。
HTTP請求過程
-
建立連接完畢以后客戶端會發(fā)送響應(yīng)給服務(wù)端
-
服務(wù)端接受請求并且做出響應(yīng)發(fā)送給客戶端
-
客戶端收到響應(yīng)并且解析響應(yīng)響應(yīng)給客戶
HTTPS
-
在使用HTTPS是需要保證服務(wù)端配置正確了對應(yīng)的安全證書
-
客戶端發(fā)送請求到服務(wù)端
-
服務(wù)端返回公鑰和證書到客戶端
-
客戶端接收后會驗證證書的安全性,如果通過則會隨機(jī)生成一個隨機(jī)數(shù),用公鑰對其加密,發(fā)送到服務(wù)端
-
服務(wù)端接受到這個加密后的隨機(jī)數(shù)后會用私鑰對其解密得到真正的隨機(jī)數(shù),隨后用這個隨機(jī)數(shù)當(dāng)做私鑰對需要發(fā)送的數(shù)據(jù)進(jìn)行對稱加密
-
客戶端在接收到加密后的數(shù)據(jù)使用私鑰(即生成的隨機(jī)值)對數(shù)據(jù)進(jìn)行解密并且解析數(shù)據(jù)呈現(xiàn)結(jié)果給客戶
-
SSL加密建立
|