#什麼是https https = http + ssl/tls協議:在https數據傳輸的過程當中,須要用ssl/tls對數據進行加密和解密,而後用http對加密後的數據進行傳輸。算法
#祕鑰相關概念 對稱加密:信息的發送方和接收方使用同一個密鑰去加密和解密數據。對稱加密的特色是算法公開、加密和解密速度快 非對稱加密:使用一對密鑰,即公鑰和私鑰,且兩者成對出現。私鑰被本身保存,不能對外泄露。公鑰指的是公共的密鑰,任何人均可以得到該密鑰。用公鑰或私鑰中的任何一個進行加密,用另外一個進行解密。服務器
#具體流程 能夠分爲兩個階段:握手階段和數據傳輸階段session
握手階段dom
客戶端開始請求:發送自身支持的ssl版本信息、加密算法、一個隨機數(random_c)加密
服務器收到請求:響應確認ssl版本、確認加密算法、服務器公鑰(pubkey_s)、一個隨機數(random_s)ssl
客戶端收到了服務器的公鑰,開始驗證:驗證經過後:客戶端會根據前面的random_c和random_s生成一個隨機數pre-master secret,而後使用pubkey_s進行加密,發給服務端,同時會根據random_c、random_s、pre-master secret經過必定的算法得出session Keyio
服務端經過私鑰來解密,獲得pre-master secret,而後也經過random_c、random_s、pre-master secret經過必定的算法得出session Keyast
數據傳輸階段 採用對稱加密,經過上個階段產生的sessionKey進行加密和解密tls