Https協(xié)議原理
簡單地來說苫拍,是基于ssl的http協(xié)議睦袖,依托ssl協(xié)議珊肃,https協(xié)議能夠確保整個通信是加密的,密鑰隨機產(chǎn)生馅笙,并且能夠通過數(shù)字證書驗證通信雙方的身份伦乔,以此來保障信息安全。其中證書包含了證書所代表一端的公鑰董习,以及一些其所具有的基本信息烈和,如機構(gòu)名稱,證書所作用域名皿淋、證書的數(shù)字簽名等招刹,通過數(shù)字簽名能夠驗證證書的真實性。通信的內(nèi)容使用對稱加密方式進行加密窝趣,通信兩端約定好通信密碼后疯暑,通過公鑰對密碼進行加密傳輸,只有該公鑰對應(yīng)的私鑰哑舒,也就是通信的另一端才能夠解密獲得通信密碼妇拯,這樣既保證了通信的安全,也使加密性能和時間成本可控洗鸵。
Https協(xié)議棧
https協(xié)議在http協(xié)議和tcp協(xié)議增加一層安全層乖阵,所有請求和響應(yīng)的數(shù)據(jù)在結(jié)果網(wǎng)絡(luò)傳輸之前都會先進行加密宣赔,然后在進行傳輸。
Https協(xié)議既支持單向認證瞪浸,也支持雙向認證儒将。
單向認證:只校驗服務(wù)端證書的有效性。
雙向認證:既校驗服務(wù)端也校驗客戶端对蒲。
SSL/TLS協(xié)議
SSL的全稱是Secure Socket Layer,既安全套接層钩蚊。SSL協(xié)議獨立于應(yīng)用層,高層應(yīng)用http,ftp,ssh都可以簡歷在ssl之上蹈矮。
TLS全程是Transport Layer Security砰逻,傳輸層安全協(xié)議,是基于SSL的通用化協(xié)議泛鸟,同樣位于應(yīng)用層和傳輸層之間蝠咆,正逐步接替SSL成為下一代網(wǎng)絡(luò)安全協(xié)議。
SSL/TLS分為兩層:
1.Record Protocol北滥,記錄協(xié)議刚操;
記錄協(xié)議建立在可靠的傳輸協(xié)議(TCP)之上,提供數(shù)據(jù)封裝再芋,加密解密菊霜,數(shù)據(jù)壓縮,數(shù)據(jù)校驗等基本功能济赎。
2,Handshake Protocol,握手協(xié)議鉴逞。
建立在握手協(xié)議之上,在實際的數(shù)據(jù)傳輸開始前司训,進行加密算法的協(xié)商构捡,通信密鑰的交換,通信雙方身份的認證壳猜。
SSL握手協(xié)議
(1)客戶端發(fā)送一個client hello消息勾徽,消息包含協(xié)議的版本信息、sessionid蓖谢、客戶端支持的加密算法、壓縮算法等信息譬涡,并且還包含客戶端產(chǎn)生的隨機數(shù)闪幽。
(2)服務(wù)端響應(yīng)一個server hello消息,消息包含服務(wù)端產(chǎn)生的隨機數(shù)涡匀、協(xié)議版本信息盯腌、sessionid、壓縮算法信息陨瘩,還有服務(wù)端數(shù)字證書腕够,如果服務(wù)端配置是雙向驗證级乍,則服務(wù)端將請求客戶端證書。
(3)客戶端通過證書來驗證服務(wù)端證書的有效性帚湘。
(4)如果證書驗證通過玫荣,客戶端將向服務(wù)端發(fā)送經(jīng)過服務(wù)端公鑰加密的預(yù)主密鑰,即PreMaster Secret大诸。假如服務(wù)端在上一個步驟請求了客戶端證書捅厂,客戶端會將客戶端證書發(fā)送給服務(wù)端進行校驗。
(5)服務(wù)端驗證客戶端證書的有效性资柔,并用自己的私鑰對PMS進行解密焙贷,使用client hello和server hello兩個步驟所生成的隨機數(shù),加上解密的PMS來生成主密鑰,即Master Secret,然后通過MS生成加密密鑰。
(6)客戶端也將使用client hello和server hello兩個步驟所生成的隨機數(shù)拌倍,加上解密的PMS來生成MS,,然后通過MS生成加密密鑰像街。
(7)通知服務(wù)端未來信息將使用加密密鑰來加密。
(8)給服務(wù)端發(fā)送加密密鑰來加密信息塔插,終止握手。
(9)通知客戶端未來信息將使用加密密鑰來加密。
(10)給客戶端發(fā)送加密密鑰來加密信息契吉,終止握手。
完成握手后诡渴,客戶端與服務(wù)端便可以開始加密數(shù)據(jù)通信: