HTTPS實現原理

2021-10-17 07:20:46 字數 1752 閱讀 8327

ssl建立連線過程

client向server傳送請求然後連線到server的443埠,傳送的資訊主要是隨機值1和客戶端支援的加密演算法。

server接收到資訊之後給予client響應握手資訊,包括隨機值2和匹配好的協商加密演算法,這個加密演算法一定是client傳送給server加密演算法的子集。

隨即server給client傳送第二個響應報文是數字證書。服務端必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面,這套證書其實就是一對公鑰和私鑰。傳送證書,這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間、服務端的公鑰,第三方證書認證機構(ca)的簽名,服務端的網域名稱資訊等內容。

客戶端解析證書,這部分工作是由客戶端的tls來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出乙個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成乙個隨即值(預主秘鑰)。

客戶端認證證書通過之後,接下來是通過隨機值1、隨機值2和預主秘鑰組裝會話秘鑰。然後通過證書的公鑰加密會話秘鑰。

傳送加密資訊,這部分傳送的是用證書加密後的會話秘鑰,目的就是讓服務端使用秘鑰解密得到隨機值1、隨機值2和預主秘鑰。

服務端解密得到隨機值1、隨機值2和預主秘鑰,然後組裝會話秘鑰,跟客戶端會話秘鑰相同。

客戶端通過會話秘鑰加密一條訊息傳送給服務端,主要驗證服務端是否正常接受客戶端加密的訊息。

同樣服務端也會通過會話秘鑰加密一條訊息回傳給客戶端,如果客戶端能夠正常接受的話表明ssl層連線建立完成了。

問題:1.怎麼保證保證伺服器給客戶端下發的公鑰是真正的公鑰,而不是中間人偽造的公鑰呢?

2.證書如何安全傳輸,被掉包了怎麼辦?

數字證書內容

包括了加密後伺服器的公鑰、權威機構的資訊、伺服器網域名稱,還有經過ca私鑰簽名之後的證書內容(經過先通過hash函式計算得到證書數字摘要,然後用權威機構私鑰加密數字摘要得到數字簽名),簽名計算方法以及證書對應的網域名稱。

驗證證書安全性過程

當客戶端收到這個證書之後,使用本地配置的權威機構的公鑰對證書進行解密得到服務端的公鑰和證書的數字簽名,數字簽名經過ca公鑰解密得到證書資訊摘要。

然後證書簽名的方法計算一下當前證書的資訊摘要,與收到的資訊摘要作對比,如果一樣,表示證書一定是伺服器下發的,沒有被中間人篡改過。因為中間人雖然有權威機構的公鑰,能夠解析證書內容並篡改,但是篡改完成之後中間人需要將證書重新加密,但是中間人沒有權威機構的私鑰,無法加密,強行加密只會導致客戶端無法解密,如果中間人強行亂修改證書,就會導致證書內容和證書簽名不匹配。

那第三方攻擊者能否讓自己的證書顯示出來的資訊也是服務端呢?(偽裝服務端一樣的配置)顯然這個是不行的,因為當第三方攻擊者去ca那邊尋求認證的時候ca會要求其提供例如網域名稱的whois資訊、網域名稱管理郵箱等證明你是服務端網域名稱的擁有者,而第三方攻擊者是無法提供這些資訊所以他就是無法騙ca他擁有屬於服務端的網域名稱

HTTPS實現原理

https 協議 就是 http 協議 和 ssl tls 協議 的組合。http over ssl 或 http over tls 對http協 議的文字資料進行加密處理後,成為二進位制形式傳輸 https結構 https工作簡化過程 1.客戶端發起https請求 使用者在瀏覽器裡輸入乙個http...

HTTPS實現原理

目錄中間人攻擊 分析ca https 非對稱加密 對稱加密 hash ca http ssl https連線過程 burp抓https包過程 演算法f,加解密keyk 加密 f k,data x 解密 f k,x data 過程 c f k,data x x s f k,x datac通過k加密da...

關於HTTPS實現原理詳解

https實現原理 ssl建立連線過程 client向server傳送請求然後連線到server的443埠,傳送的資訊主要是隨機值1和客戶端支援的加密演算法。2.server接收到資訊之後給予client響應握手資訊,包括隨機值2和匹配好的協商加密演算法,這個加密演算法一定是client傳送給ser...