https是什么
HTTPS 即 Hypertext Transfer Protocol Secure 的簡稱,它是一種安全的網絡通信傳輸協議,由HTTP進行通信;在HTTP協議的基礎上加入了SSL/TLS層,利用SSL/TLS建立全信道加密數據包,從而保證了數據的安全,其提供對網站服務器身份認證的功能,保護交換數據的隱私與完整性。
TLS是傳輸層加密協議,前身是SSL協議,由網景公司1995年發布,有時候兩者不區分
image.png
前提知識
1、使用HTTPS,服務端必須要有一套數字證書,一般證書都是向受信任的CA機構申請;
2、對稱加密,即加密和解密使用同一個密匙的加密算法;
3、非對稱加密,即加密和解密使用不同密匙的加密算法,公鑰用于加密,私鑰用于解密;
4、HTTPS使用的是混合加密算法,即對稱和非對稱都使用,先用非對稱然后使用對稱加密;
5、在安裝操作系統的時候,會默認安裝受信任CA機構的證書,里面包含有CA機構的公鑰;
6、證書的作用其實主要是返回服務器的公鑰;
7、實際數據傳輸過程中使用的是對稱加密算法,只是獲取公鑰時使用非對稱算法;
https請求流程
1、客戶端使用https協議,向服務器發送請求;
2、服務端會給客戶端(這里指瀏覽器)返回一個數字證書;
3、如果客戶端沒有設置默認信任所有證書,這時瀏覽器會從本地操作系統中取出CA的公鑰,驗證證書;
4、當證書驗證通過后,取出服務器的公鑰,將約定的對稱加密密鑰和加密算法用公鑰加密后發送給服務器;
5、服務器使用私鑰將客服端的信息解密,獲取對稱加密加密的公鑰和加密算法;
6、服務器獲取密鑰后開始和客戶端使用對稱加密算法傳輸數據;
至此整個HTTPS請求過程結束;
image.png
要想保證HTTPS的絕對安全,客戶端一定需要驗證證書的合法性;