https實現原理
ssl建立連線過程
client向server傳送請求然後連線到server的443埠,傳送的資訊主要是隨機值1和客戶端支援的加密演算法。
2.server接收到資訊之後給予client響應握手資訊,包括隨機值2和匹配好的協商加密演算法,這個加密演算法一定是client傳送給server加密演算法的子集。
3.隨即server給client傳送第二個響應報文是數字證書。服務端必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面,這套證書其實就是一對公鑰和私鑰。傳送證書,這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間、服務端的公鑰,第三方證書認證機構(ca)的簽名,服務端的網域名稱資訊等內容。
客戶端解析證書,這部分工作是由客戶端的tls來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出乙個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成乙個隨即值(預主秘鑰)。
5.客戶端認證證書通過之後,接下來是通過隨機值1、隨機值2和預主秘鑰組裝會話秘鑰。然後通過證書的公鑰加密會話秘鑰。
傳送加密資訊,這部分傳送的是用證書加密後的會話秘鑰,目的就是讓服務端使用秘鑰解密得到隨機值1、隨機值2和預主秘鑰。
服務端解密得到隨機值1、隨機值2和預主秘鑰,然後組裝會話秘鑰,跟客戶端會話秘鑰相同。
客戶端通過會話秘鑰加密一條訊息傳送給服務端,主要驗證服務端是否正常接受客戶端加密的訊息。
同樣服務端也會通過會話秘鑰加密一條訊息回傳給客戶端,如果客戶端能夠正常接受的話表明ssl層連線建立完成了。
問題:1.怎麼保證保證伺服器給客戶端下發的公鑰是真正的公鑰,而不是中間人偽造的公鑰呢?
2.證書如何安全傳輸,被掉包了怎麼辦?
數字證書內容
包括了加密後伺服器的公鑰、權威機構的資訊、伺服器網域名稱,還有經過ca私鑰簽名之後的證書內容(經過先通過hash函式計算得到證書數字摘要,然後用權威機構私鑰加密數字摘要得到數字簽名),簽名計算方法以及證書對應的網域名稱。
驗證證書安全性過程
當客戶端收到這個證書之後,使用本地配置的權威機構的公鑰對證書進行解密得到服務端的公鑰和證書的數字簽名,數字簽名經過ca公鑰解密得到證書資訊摘要。
然後證書簽名的方法計算一下當前證書的資訊摘要,與收到的資訊摘要作對比,如果一樣,表示證書一定是伺服器下發的,沒有被中間人篡改過。因為中間人雖然有權威機構的公鑰,能夠解析證書內容並篡改,但是篡改完成之後中間人需要將證書重新加密,但是中間人沒有權威機構的私鑰,無法加密,強行加密只會導致客戶端無法解密,如果中間人強行亂修改證書,就會導致證書內容和證書簽名不匹配。
那第三方攻擊者能否讓自己的證書顯示出來的資訊也是服務端呢?(偽裝服務端一樣的配置)顯然這個是不行的,因為當第三方攻擊者去ca那邊尋求認證的時候ca會要求其提供例如網域名稱的whois資訊、網域名稱管理郵箱等證明你是服務端網域名稱的擁有者,而第三方攻擊者是無法提供這些資訊所以他就是無法騙ca他擁有屬於服務端的網域名稱。
運用與總結
安全性考慮:
https協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用
ssl證書的信用鏈體系並不安全,特別是在某些國家可以控制ca根證書的情況下,中間人攻擊一樣可行
中間人攻擊(mitm攻擊)是指,黑客攔截並篡改網路中的通訊資料。又分為被動mitm和主動mitm,被動mitm只竊取通訊資料而不修改,而主動mitm不但能竊取資料,還會篡改通訊資料。最常見的中間人攻擊常常發生在公共wifi或者公共路由上。成本考慮:ssl證書需要購買申請,功能越強大的證書費用越高
ssl證書通常需要繫結ip,不能在同一ip上繫結多個網域名稱,ipv4資源不可能支撐這個消耗(ssl有擴充套件可以部分解決這個問題,但是比較麻煩,而且要求瀏覽器、作業系統支援,windows xp就不支援這個擴充套件,考慮到xp的裝機量,這個特性幾乎沒用)。
根據acm conext資料顯示,使用https協議會使頁面的載入時間延長近50%,增加10%到20%的耗電。
https連線快取不如http高效,流量成本高。
https連線伺服器端資源占用高很多,支援訪客多的**需要投入更大的成本。
https協議握手階段比較費時,對**的響應速度有影響,影響使用者體驗。比較好的方式是採用分而治之,類似12306**的主頁使用http協議,有關於使用者資訊等方面使用https。
HTTPS 原理詳解
概念 1 http 協議 hypertext transfer protocol,超文字傳輸協議 是客戶端瀏覽器或其他程式與web伺服器之間的應用層通訊協議 2 https 協議 hypertext transfer protocol over secure socket layer 可以理解為ht...
HTTPS實現原理
ssl建立連線過程 client向server傳送請求然後連線到server的443埠,傳送的資訊主要是隨機值1和客戶端支援的加密演算法。server接收到資訊之後給予client響應握手資訊,包括隨機值2和匹配好的協商加密演算法,這個加密演算法一定是client傳送給server加密演算法的子集。...
HTTPS實現原理
https 協議 就是 http 協議 和 ssl tls 協議 的組合。http over ssl 或 http over tls 對http協 議的文字資料進行加密處理後,成為二進位制形式傳輸 https結構 https工作簡化過程 1.客戶端發起https請求 使用者在瀏覽器裡輸入乙個http...