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