1.HTTP缺點:
無連接: HTTP/1.1之前每次請求都要通過TCP建立連接斷開連接,HTTP/1.1實現了持久連接
無狀態: Cookie技術和持久連接解決
明文傳輸: 不安全
HTTPS:簡單講是HTTP的安全版,在HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
2.HTTPS特點:
內容加密:采用混合加密技術,中間者無法直接查看明文內容
驗證身份:通過證書認證客戶端訪問的是自己的服務器
保護數據完整性:防止傳輸的內容被中間人冒充或者篡改
加密算法 --- RSA(混合加密機制)
(1)共享密匙加密: 公開密匙加密解密,但是無法保證安全發送密匙
(2)公開密匙加密: 公開密匙加密,私有密匙解密
HTTPS:混合加密機制: 結合對稱加密和非對稱加密技術
用對稱加密生成的密鑰對通信數據加密
用非對稱加密生成的公鑰對密鑰加密
這樣在保證密鑰的安全性下,提高了效率
認證 --- 防止"中間人"攻擊,並驗證服務器身份
證書: 認證機構(CA)信息,公鑰,域名,有效期,指紋(對證書進行hash運算,即證書摘要),指紋算法,數字簽名(CA私鑰加密的指紋)等
通信過程:
1.客戶端發起 HTTPS 請求,服務端返回證書
2.客戶端對證書進行驗證,驗證通過后本地生成用於改造對稱加密算法的隨機數。
3.通過證書中的公鑰對隨機數進行加密傳輸到服務端,服務端接收后通過私鑰解密得到隨機數,之后的數據交互通過對稱加密算法進行加解密。
驗證過程:
1. 證書是否過期
2.CA是否可靠(查詢信任的本地根證書)
3.證書是否被篡改(用戶使用CA根公鑰解密簽名得到原始指紋,再對證書使用指紋算法得到新指紋,兩指紋若不一樣,則被篡改)
4.服務器域名和證書上的域名是否匹配
助於理解,在知乎上down的HTTPS通信流程:
常見面試題 :
Q:HTTP與HTTPS區別?
A: 1.HTTPS需要申請購買CA證書, HTTP不需要
2.HTTP是明文傳輸,不安全, HTTPS是在HTTP基礎上加了SSL層,更安全
3.HTTPS效率低,HTTP效率高
Q:HTTPS傳輸過程?
A:客戶端發起 HTTPS 請求,服務端返回證書,客戶端對證書驗證,驗證通過后本地生成用於改造對稱加密算法的隨機數,通過證書中的公鑰對隨機數進行加密傳輸到服務端,服務端接收后通過私鑰解密得到隨機數,之后的數據交互通過對稱加密算法進行加解密。
Q:為什么需要證書?
A:防止中間人攻擊,驗證服務器身份
Q:怎么防止的篡改?
A:證書是公開的,雖然中間人可以拿到證書,但私鑰無法獲取,公鑰無法推斷出私鑰,所以篡改后不能用私鑰加密,強行加密客戶也無法解密,強行修改內容,會導致證書內容與簽名中的指紋不匹配