1. 程式人生 > >深入理解HTTPS通訊原理(單向認證)

深入理解HTTPS通訊原理(單向認證)

一、HTTPS簡介

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),簡單來講就是加了安全的HTTP,即HTTP+SSL;我們知道HTTP通訊時,如果客戶端C請求伺服器S,那麼可以通過網路抓包的形式來獲取資訊,甚至可以模擬伺服器S端,來騙取與C端的通訊資訊;這對網際網路應用在安全領域的推廣非常不利;HTTPS解決了這個問題。

二、HTTPS與HTTP的區別

1)HTTPS的伺服器需要到CA申請證書,以證明自己伺服器的用途;

2)HTTP資訊是明文傳輸,HTTPS資訊是密文傳輸;

3)HTTP與HTTPS的埠不同,一個是80埠,一個是443埠;

可以說HTTP與HTTPS是完全不同的連線方式,HTTPS集合了加密傳輸,身份認證,更加的安全。

三、HTTPS通訊的步驟

1)客戶端請求伺服器,傳送握手訊息

2)伺服器返回客戶端自己的加密演算法、數字證書和公鑰;

3)客戶端驗證伺服器端傳送來的數字證書是否與本地受信任的證書相關資訊一致;如果不一致則客戶端瀏覽器提示證書不安全如下圖所示

如果驗證通過,則瀏覽器會採用自身的隨機數演算法產生一個隨機數,並用伺服器傳送來的公鑰加密;傳送給伺服器;這裡如果有人通過攻擊獲取了這個訊息,那也沒用,因為他沒有解密此段訊息所需要私鑰;驗證通過的網站在瀏覽器位址列的右邊會有一安全鎖的標識;

3)伺服器解密得到此隨機數,並用此隨機數作為金鑰採用對稱加密演算法加密一段握手訊息傳送給瀏覽器;

4)瀏覽器收到訊息後解密成功,則握手結束,後續的資訊都通過此隨機金鑰加密傳輸。

以上是服務端認證的情況,如果服務端對訪問的客戶端也有認證需求,則客戶端也需要將自己的證書傳送給伺服器,伺服器認證不通過,通訊結束;原理同上;

另外,一般在傳輸過程中為了防止訊息竄改,還會採用訊息摘要後再加密的方式,以此保證訊息傳遞的正確性。

四、附錄客戶端訊息結構圖