HTTP協(xié)議是無狀態(tài)的(對于事物處理沒有記憶能力,如果后續(xù)處理需要前面的信息則需要重傳),使用明文進行傳輸?shù)膮f(xié)議言缤。它主要有以下的不足:
- 通信使用明文膊存,所以內(nèi)容是可以被竊聽的导而;
- 不會驗證雙方的身份忱叭,因此可能會遇到偽裝;
- 無法驗證報文的完整性今艺,有可能被篡改窑多。
HTTPS是在HTTP協(xié)議下加入了SSL(安全套接層)。HTTP先和SSL通信洼滚,然后由SSL和TCP通信埂息。
HTTPS加密方式
SSL有一個四次握手的過程,該過程為:
- 客戶端發(fā)送支持的加密方式以及一個隨機數(shù)client random給服務(wù)器遥巴;
- 服務(wù)器選擇其中的一種加密方式千康,并且再加上另外一個隨機數(shù)server random,和數(shù)字證書铲掐,發(fā)送給客戶端拾弃;
- 客戶端確認這個數(shù)字證書是有效的,并且再生成一個新的隨機數(shù)摆霉,將這個隨機數(shù)用服務(wù)器發(fā)送給它的數(shù)字證書中的公鑰進行加密發(fā)送給服務(wù)器豪椿;
-
服務(wù)器利用自己的私鑰進行解密,獲得這個隨機數(shù)携栋,利用他們協(xié)商的加密方式將前面的這三個隨機數(shù)計算生成一個對話密鑰搭盾,至此握手階段完成,之后的會話他們就通過這個對話密鑰進行加密婉支。
HTTPS可以完成上述HTTP的缺陷:通過對通信內(nèi)容加密保證了內(nèi)容的安全性鸯隅。并且通過數(shù)字證書可以驗證雙方的身份,因為數(shù)字證書是由權(quán)威機構(gòu)(CA)頒布的向挖。并且因為報文中有發(fā)送方的數(shù)字簽名蝌以,所以接收方可以先驗證數(shù)字簽名,從而驗證了數(shù)據(jù)沒有被篡改何之,保證了完整性跟畅。
HTTPS的缺陷:
HTTPS的主要缺陷就是通信慢以及消耗CPU以及內(nèi)存等資源。
因為HTTPS的傳輸過程加入了SSL層溶推,所以整體通信過程會變慢徊件;而且由于使用了加解密算法,會消耗大量的CPU以及內(nèi)存悼潭。
參考資料:
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html