HTTPS其實是有兩部分組成:HTTP + SSL / TLS容握,也就是在HTTP上又加了一層處理加密信息的模塊寻咒。服務(wù)端和客戶端的信息傳輸都會通過TLS進(jìn)行加密馍迄,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。具體是如何進(jìn)行加密,解密靡馁,驗證的,且看下圖炭玫。
- 客戶端發(fā)起HTTPS請求
這個沒什么好說的奈嘿,就是用戶在瀏覽器里輸入一個https網(wǎng)址,然后連接到server的443端口吞加。
- 客戶端發(fā)起HTTPS請求
- 2.務(wù)端的配置
采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書,可以自己制作尽狠,也可以向組織申請衔憨。區(qū)別就是自己頒發(fā)的證書需要客戶端驗證通過,才可以繼續(xù)訪問袄膏,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇践图,有1年的免費(fèi)服務(wù))。這套證書其實就是一對公鑰和私鑰沉馆。如果對公鑰和私鑰不太理解码党,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙斥黑,你可以把鎖頭給別人揖盘,別人可以用這個鎖把重要的東西鎖起來,然后發(fā)給你锌奴,因為只有你一個人有這把鑰匙兽狭,所以只有你才能看到被這把鎖鎖起來的東西。 - 3.傳送證書
這個證書其實就是公鑰鹿蜀,只是包含了很多信息箕慧,如證書的頒發(fā)機(jī)構(gòu),過期時間等等茴恰。 4.客戶端解析證書
這部分工作是有客戶端的TLS來完成的颠焦,首先會驗證公鑰是否有效,比如頒發(fā)機(jī)構(gòu)往枣,過期時間等等伐庭,如果發(fā)現(xiàn)異常,則會彈出一個警告框婉商,提示證書存在問題似忧。如果證書沒有問題,那么就生成一個隨機(jī)值丈秩。然后用證書對該隨機(jī)值進(jìn)行加密盯捌。就好像上面說的,把隨機(jī)值用鎖頭鎖起來蘑秽,這樣除非有鑰匙饺著,不然看不到被鎖住的內(nèi)容箫攀。
5.傳送加密信息
這部分傳送的是用證書加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個隨機(jī)值幼衰,以后客戶端和服務(wù)端的通信就可以通過這個隨機(jī)值來進(jìn)行加密解密了靴跛。
6.服務(wù)段解密信息
服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機(jī)值(私鑰)渡嚣,然后把內(nèi)容通過該值進(jìn)行對稱加密梢睛。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起识椰,這樣除非知道私鑰绝葡,不然無法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個私鑰腹鹉,所以只要加密算法夠彪悍藏畅,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全功咒。
7.傳輸加密后的信息
這部分信息是服務(wù)段用私鑰加密后的信息愉阎,可以在客戶端被還原。
8.客戶端解密信息
客戶端用之前生成的私鑰解密服務(wù)段傳過來的信息力奋,于是獲取了解密后的內(nèi)容榜旦。整個過程第三方即使監(jiān)聽到了數(shù)據(jù),也束手無策刊侯。