一:https握手大致過程
- 建立服務(wù)器443端口連接
- SSL握手:隨機(jī)數(shù)饱岸,證書被廓,密鑰翎承,加密算法
- 發(fā)送加密請求
- 發(fā)送加密響應(yīng)
- 關(guān)閉SSL
- 關(guān)閉TCP
二: HTTPS 驗證原理
Https在真正請求數(shù)據(jù)前蛉鹿,先會與服務(wù)有幾次握手驗證取劫,以證明相互的身份巷帝,以下圖為例
- 客戶端發(fā)起HTTPS請求
- 服務(wù)端的配置
采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書忌卤,可以是自己制作或者CA證書。區(qū)別就是自己頒發(fā)的證書需要客戶端驗證通過楞泼,才可以繼續(xù)訪問驰徊,而使用CA證書則不會彈出提示頁面。這套證書其實就是一對公鑰和私鑰现拒。公鑰給別人加密使用辣垒,私鑰給自己解密使用。 - 傳送證書
這個證書其實就是公鑰印蔬,只是包含了很多信息勋桶,如證書的頒發(fā)機(jī)構(gòu),過期時間等侥猬。 - 客戶端解析證書
這部分工作是有客戶端的TLS來完成的例驹,首先會驗證公鑰是否有效,比如頒發(fā)機(jī)構(gòu)退唠,過期時間等鹃锈,如果發(fā)現(xiàn)異常,則會彈出一個警告框瞧预,提示證書存在問題屎债。如果證書沒有問題,那么就生成一個隨即值垢油,然后用證書對該隨機(jī)值進(jìn)行加密盆驹。 - 傳送加密信息
這部分傳送的是用證書加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個隨機(jī)值滩愁,以后客戶端和服務(wù)端的通信就可以通過這個隨機(jī)值來進(jìn)行加密解密了躯喇。 - 服務(wù)段解密信息
服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機(jī)值(私鑰)硝枉,然后把內(nèi)容通過該值進(jìn)行對稱加密廉丽。所謂對稱加密就是倦微,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰正压,不然無法獲取內(nèi)容欣福,而正好客戶端和服務(wù)端都知道這個私鑰,所以只要加密算法夠彪悍蔑匣,私鑰夠復(fù)雜劣欢,數(shù)據(jù)就夠安全。 - 傳輸加密后的信息
這部分信息是服務(wù)段用私鑰加密后的信息裁良,可以在客戶端被還原凿将。 - 客戶端解密信息
客戶端用之前生成的私鑰解密服務(wù)段傳過來的信息,于是獲取了解密后的內(nèi)容价脾。
PS: 整個握手過程第三方即使監(jiān)聽到了數(shù)據(jù)架馋,也束手無策弧蝇。
總結(jié)
為什么HTTPS是安全的洞豁?
在HTTPS握手的第四步中榨呆,如果站點的證書是不受信任的,會顯示出現(xiàn)下面確認(rèn)界面秋柄,確認(rèn)了網(wǎng)站的真實性获枝。另外第六和八步,使用客戶端私鑰加密解密骇笔,保證了數(shù)據(jù)傳輸?shù)陌踩?/p>