1.HTTPS對稱加密
服務器每次發送真實數據前,會先生成一把密鑰傳輸(以明文方式傳輸密鑰容易被劫持)給客戶端,服務器給客戶端發送的真實數據會先用這把密鑰進行加密,客戶端收到加密數據後再用密鑰進行解密(客戶端給服務器發送數據同理)
2.HTTPS非對稱加密
客戶端和服務器都有兩把密鑰,一把公鑰一把私鑰(公鑰加密的數據只有私鑰才能解密,私鑰加密的數據只有公鑰才能解密),服務器在給客戶端發送真實數據前,先用客戶端明文傳輸給服務器的公鑰進行加密,客戶端收到後用自己的私鑰進行解密,反之同理
3.HTTPS對稱加密+非對稱加密
鑑於HTTPS非對稱加密在加密時速度特別慢,可使用HTTPS對稱加密+非對稱加密(以非對稱加密的方式傳輸對稱加密密鑰),接着就可使用對稱加密的密鑰傳輸數據
非對稱加密之所以不安全是因爲客戶端不知道接收的公鑰是否屬於服務器
4.HTTPS數字證書
核心在於證明客戶端接收的公鑰是屬於服務器的,解決這個問題方法是使用數字證書(即找到一個大家都認可的認證中心CA)
服務器在給客戶端傳輸公鑰的過程中,會將公鑰+服務器個人信息通過hash算法生成信息摘要,爲防止信息摘要被掉包服務器會用CA提供的私鑰對信息摘要加密形成數字簽名。最後還會將沒有進行hash算法計算的服務器個人信息+公鑰和數字簽名合併在一起形成數字證書
客戶端拿到數字證書後,用CA提供的公鑰對數字簽名進行解密得到信息摘要,然後對數字證書中服務器個人信息+公鑰進行hash得到另一份信息摘要,兩份信息摘要進行比對,若一樣則是目標服務器,否則不是
服務器會申請證書,客戶端會內置證書