Https通訊原理
Https是什么?
Https是基于安全目的的Http通道,其安全基礎(chǔ)由SSL層來(lái)保證。最初由netscape公司研發(fā),主要提供了通訊雙方的身份認(rèn)證和加密通信方法?,F(xiàn)在廣泛應(yīng)用于互聯(lián)網(wǎng)上安全敏感通訊。
Https與Http主要區(qū)別
協(xié)議基礎(chǔ)不同:Https在Http下加入了SSL層,
通訊方式不同:Https在數(shù)據(jù)通信之前需要客戶端、服務(wù)器進(jìn)行握手(身份認(rèn)證),建立連接后,傳輸數(shù)據(jù)經(jīng)過(guò)加密,通信端口443。
Http傳輸數(shù)據(jù)不加密,明文,通信端口80。
SSL協(xié)議基礎(chǔ)
SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,本身又分為兩層:
SSL記錄協(xié)議(SSL Record Protocol):建立在可靠傳輸層協(xié)議(TCP)之上,為上層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能。
SSL握手協(xié)議(SSL Handshake Procotol):在SSL記錄協(xié)議之上,用于實(shí)際數(shù)據(jù)傳輸前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。
SSL協(xié)議通信過(guò)程
(1) 瀏覽器發(fā)送一個(gè)連接請(qǐng)求給服務(wù)器;服務(wù)器將自己的證書(包含服務(wù)器公鑰S_PuKey)、對(duì)稱加密算法種類及其他相關(guān)信息返回客戶端;
(2) 客戶端瀏覽器檢查服務(wù)器傳送到CA證書是否由自己信賴的CA中心簽發(fā)。若是,執(zhí)行4步;否則,給客戶一個(gè)警告信息:詢問(wèn)是否繼續(xù)訪問(wèn)。
(3) 客戶端瀏覽器比較證書里的信息,如證書有效期、服務(wù)器域名和公鑰S_PK,與服務(wù)器傳回的信息是否一致,如果一致,則瀏覽器完成對(duì)服務(wù)器的身份認(rèn)證。
(4) 服務(wù)器要求客戶端發(fā)送客戶端證書(包含客戶端公鑰C_PuKey)、支持的對(duì)稱加密方案及其他相關(guān)信息。收到后,服務(wù)器進(jìn)行相同的身份認(rèn)證,若沒(méi)有通過(guò)驗(yàn)證,則拒絕連接;
(5) 服務(wù)器根據(jù)客戶端瀏覽器發(fā)送到密碼種類,選擇一種加密程度***的方案,用客戶端公鑰C_PuKey加密后通知到瀏覽器;
(6) 客戶端通過(guò)私鑰C_PrKey解密后,得知服務(wù)器選擇的加密方案,并選擇一個(gè)通話密鑰key,接著用服務(wù)器公鑰S_PuKey加密后發(fā)送給服務(wù)器;
(7) 服務(wù)器接收到的瀏覽器傳送到消息,用私鑰S_PrKey解密,獲得通話密鑰key。
(8) 接下來(lái)的數(shù)據(jù)傳輸都使用該對(duì)稱密鑰key進(jìn)行加密。
上面所述的是雙向認(rèn)證 SSL 協(xié)議的具體通訊過(guò)程,服務(wù)器和用戶雙方必須都有證書。由此可見(jiàn),SSL協(xié)議是通過(guò)非對(duì)稱密鑰機(jī)制保證雙方身份認(rèn)證,并完成建立連接,在實(shí)際數(shù)據(jù)通信時(shí)通過(guò)對(duì)稱密鑰機(jī)制保障數(shù)據(jù)安全性