一、HTTPS簡介 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),簡單來講就是加了安全的HTTP,即HTTP+SSL;我們知道HTTP通訊時,如果客戶端C請求伺服器S,那麼可以通過網路抓包的形式來獲取信息,甚至可以模擬伺服器 ...
一、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)瀏覽器收到消息後解密成功,則握手結束,後續的信息都通過此隨機密鑰加密傳輸。
以上是服務端認證的情況,如果服務端對訪問的客戶端也有認證需求,則客戶端也需要將自己的證書發送給伺服器,伺服器認證不通過,通訊結束;原理同上;
另外,一般在傳輸過程中為了防止消息竄改,還會採用消息摘要後再加密的方式,以此保證消息傳遞的正確性。