一、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)浏覽器收到消息後解密成功,則握手結束,後續的信息都通過此隨機密鑰加密傳輸。
以上是服務端認證的情況,如果服務端對訪問的客戶端也有認證需求,則客戶端也需要將自己的證書發送給服務器,服務器認證不通過,通訊結束;原理同上;
另外,一般在傳輸過程中為了防止消息竄改,還會采用消息摘要後再加密的方式,以此保證消息傳遞的正確性。