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