一:基本概念
HTTP(HyperText Transfer Protocol:超文本傳輸協議)是一種用於分布式、協作式和超媒體信息系統的應用層協議。也就是一種發送和接收html頁面的方法,主要用於web瀏覽器和網站服務器之間的信息傳遞.
HTTP工作默認在TCP協議80端口,http協議傳輸以明文傳遞,如果攻擊者讀取web瀏覽器和網站服務器之間的報文就會導致信息泄露,所以http不適合傳輸敏感信息
HTTPS(Hypertext Transfer Protocol Secure:超文本傳輸安全協議)是一種透過計算機網絡進行安全通信的傳輸協議。HTTPS 經由 HTTP 進行通信,但利用 SSL/TLS 來加密數據包。
HTTPS 開發的主要目的,是提供對網站服務器的身份認證,保護交換數據的隱私與完整性。HTTPS 默認工作在 TCP 協議443端口,它的工作流程一般如以下方式
1.TCP 三次同步握手
2.客戶端驗證服務器數字證書
3.DH 算法協商對稱加密算法的密鑰、hash 算法的密鑰
4.SSL 安全加密隧道協商完成
5.網頁以加密的方式傳輸,用協商的對稱加密算法和密鑰加密,保證數據機密性;用協商的hash算法進行數據完整性保護,保證數據不被篡改。
二:HTTP 與 HTTPS 區別
1.HTTP 明文傳輸,數據都是未加密的,安全性較差,HTTPS(SSL+HTTP) 數據傳輸過程是加密的,安全性較好。
2.使用 HTTPS 協議需要到 CA(Certificate Authority,數字證書認證機構) 申請證書,一般免費證書較少,因而需要一定費用。證書頒發機構如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
3.HTTP 頁面響應速度比 HTTPS 快,主要是因為 HTTP 使用 TCP 三次握手建立連接,客戶端和服務器需要交換 3 個包,而 HTTPS除了 TCP 的三個包,還要加上 ssl 握手需要的 9 個包,所以一共是 12 個包。
4.http 和 https 使用的是完全不同的連接方式,用的端口也不一樣,前者是 80,后者是 443
5.HTTPS 其實就是建構在 SSL/TLS 之上的 HTTP 協議,所以,要比較 HTTPS 比 HTTP 要更耗費服務器資源。
三:TCP三次握手分別是什么
1.第一次握手:客戶端嘗試連接服務器,向服務器發送 syn 包(同步序列編號Synchronize Sequence Numbers),syn=j,客戶端進入 SYN_SEND 狀態等待服務器確認
2.第二次握手:服務器接收客戶端syn包並確認(ack=j+1),同時向客戶端發送一個 SYN包(syn=k),即 SYN+ACK 包,此時服務器進入 SYN_RECV 狀態
3.第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手
簡單理解就是
四:HTTPS 的工作原理
1.客戶使用https的URL訪問Web服務器,要求與Web服務器建立SSL連接。
2.Web服務器收到客戶端請求后,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。
3.客戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級,也就是信息加密的等級。
4.客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然后利用網站的公鑰將會話密鑰加密,並傳送給網站。
5.Web服務器利用自己的私鑰解密出會話密鑰。
6.Web服務器利用會話密鑰加密與客戶端之間的通信。
五:HTTPS 的優點
1.使用HTTPS協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2.HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性。
3.HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
4.谷歌曾在2014年8月份調整搜索引擎算法,並稱“比起同等HTTP網站,采用HTTPS加密的網站在搜索結果中的排名將會更高”。
六:HTTPS的缺點
1.SSL證書需要錢,功能越強大的證書費用越高
2.SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名