HTTPS在HTTP的基礎上加入了SSL協(xié)議址儒,SSL依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密衅疙。具體是如何進行加密莲趣,解密,驗證的炼蛤,且看下圖妖爷,下面的稱為一次握手蝶涩。
1. 客戶端發(fā)起HTTPS請求
2. 服務端的配置
采用HTTPS協(xié)議的服務器必須要有一套數(shù)字證書理朋,可以是自己制作或者CA證書。區(qū)別就是自己頒發(fā)的證書需要客戶端驗證通過绿聘,才可以繼續(xù)訪問嗽上,而使用CA證書則不會彈出提示頁面。這套證書其實就是一對公鑰和私鑰熄攘。公鑰給別人加密使用兽愤,私鑰給自己解密使用。
3. 傳送證書
這個證書其實就是公鑰挪圾,只是包含了很多信息浅萧,如證書的頒發(fā)機構,過期時間等哲思。
4. 客戶端解析證書
這部分工作是有客戶端的TLS來完成的洼畅,首先會驗證公鑰是否有效,比如頒發(fā)機構棚赔,過期時間等帝簇,如果發(fā)現(xiàn)異常,則會彈出一個警告框靠益,提示證書存在問題丧肴。如果證書沒有問題,那么就生成一個隨即值胧后,然后用證書對該隨機值進行加密芋浮。
5. 傳送加密信息
這部分傳送的是用證書加密后的隨機值,目的就是讓服務端得到這個隨機值壳快,以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了途样。
6. 服務段解密信息
服務端用私鑰解密后,得到了客戶端傳過來的隨機值(私鑰)濒憋,然后把內(nèi)容通過該值進行對稱加密何暇。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起凛驮,這樣除非知道私鑰裆站,不然無法獲取內(nèi)容,而正好客戶端和服務端都知道這個私鑰,所以只要加密算法夠彪悍宏胯,私鑰夠復雜羽嫡,數(shù)據(jù)就夠安全。
7. 傳輸加密后的信息
這部分信息是服務段用私鑰加密后的信息肩袍,可以在客戶端被還原杭棵。
8. 客戶端解密信息
客戶端用之前生成的私鑰解密服務段傳過來的信息,于是獲取了解密后的內(nèi)容氛赐。
PS: 整個握手過程第三方即使監(jiān)聽到了數(shù)據(jù)魂爪,也束手無策。