https傳輸過程及原理

1. 基礎知識

  • SSL:一般情況下,網站使用的都是明文方式傳輸數據,但是在涉及到一些隱私信息時(如銀行交易),這個時候網站就會跳轉到 SSL,SSl的功能就是提供加密數據。這樣的話,TCP/IP協議只要做好的自己的事情,數據加密就全權委託給SSL協議完成

  • TLS:TLS是對SSL的擴展和優化,他可以提供數據安全的同時,確保數據的完整性

  • HTTPS:超文本傳輸安全協議。就是http+ssl/tls,可以理解爲安全版http

  • 對稱加密:對稱加密又叫做私鑰加密,即信息的發送方和接收方使用同一個密鑰去加密和解密數據

  • 非對稱加密:使用一對密鑰,即公鑰和私鑰,且二者成對出現。私鑰被自己保存,不能對外泄露。公鑰指的是公共的密鑰,任何人都可以獲得該密鑰。用公鑰或私鑰中的任何一個進行加密,用另一個進行解密

  • 證書認證:個人生成的公鑰和私鑰是不被信任的,只有經過CA認證後後纔會被認爲是可信任的密鑰。目前大多瀏覽器都內置了國際知名CA的根證書中心,如果我們的密鑰被CA中心簽名過,那麼就是合法的數字證書。但其CA驗證密鑰過程複雜,所以很多人使用自簽名的數字證書

非對稱加密使用的是公鑰加密和私鑰解密機制

2. 圖解https的傳輸過程

  1. 客戶端發起https請求,連接到服務端的443端口
  2. 服務端採用的https有一套數字證書,這個證書可以自己配置,也可以像證書管理組織申請,證書的本質是公鑰(發給任何人)和私鑰(服務端保留)
  3. 服務端將公鑰傳送證書傳遞給客戶端,證書中包含了很多信息,比如證書的頒發機構,過期時間,網址,公鑰等
  4. 客戶端解析證書,由客戶端的TLS完成,首先會驗證公鑰是否有效,比如頒發機構,過期時間等。如果有異常,就會彈出警告信息。(這個我們上網應該遇到過,一般都是提示說該網站的證書不可信任,是否繼續等)。證書沒問題後會隨機生成隨機值(這個很重要,用於對稱加密),然後使用第三步中的證書對這個隨機值進行非對稱加密
  5. 將證書非對稱加密後的隨機值傳到服務器
  6. 服務器使用私鑰對其進行非對稱解密後,得到客戶端的隨機值,然後把內容通過該隨機值進行對稱加密
  7. 服務端將對稱加密後的信息發給客戶端
  8. 客戶端用之前的生成的隨機值來進行對稱解密,獲取內容明文

3. CA

SSL/TLS 工作流-圖二

 

CA: 證書授權中心 (certificate authority)。 它呢,類似於國家出入境管理處一樣,給別人頒發護照;也類似於國家工商管理局一樣,給公司企業頒發營業執照。
它有兩大主要性質:

    1. CA 本身是受信任的 // 國際認可的
    1. 給他受信任的申請對象頒發證書 // 和辦理護照一樣,要確定你的合法身份,你不能是犯罪分子或造反派。
      當然,你需要被收保護費,同時,CA 可以隨時吊銷你的證書

3.1 CA證書詳細的工作流

 

1)申請認證:服務器需自己生成公鑰私鑰對 pub_svr & pri_svr,同時根據 pub_svr 生成請求文件 csr, 提交給 CA,csr 中含有公鑰、組織信息、個人信息 (域名) 等信息。(圖二中 server.req 就是 csr 請求文件)
2)審覈信息:CA 通過線上、線下等多種手段驗證申請者提供信息的真實性,如組織是否存在、企業是否合法,是否擁有域名的所有權等。
3)簽發證書:如信息審覈通過,CA 會向申請者簽發認證文件 - 證書。 證書包含以下信息:申請者公鑰、申請者的組織信息和個人信息、簽發機構 CA 的信息、有效時間、證書序列號等信息的明文,同時包含一個簽名。 簽名的產生算法:首先,使用散列函數計算公開的明文信息的信息摘要,然後,採用 CA 的私鑰對信息摘要進行加密,密文即簽名。(圖二中生成 server.crt)
4)返回證書:client 如果請求驗證服務器,服務器需返回證書文件。(圖二中 handshake 傳回 server.crt
5)client 驗證證書:client 讀取證書中的相關的明文信息,採用相同的散列函數計算得到信息摘要,然後,利用對應 CA 的公鑰解密簽名數據,對比證書的信息摘要,如果一致,則可以確認證書的合法性,即公鑰合法。客戶端然後驗證證書相關的域名信息、有效時間是否吊銷等信息。 客戶端會內置信任 CA 的證書信息 (包含公鑰),如果 CA 不被信任,則找不到對應 CA 的證書,證書也會被判定非法。(圖二中 check 可選,我們可以選擇不驗證服務器證書的有效性)
6)祕鑰協商:驗證通過後,Server 和 Client 將進行祕鑰協商。接下來 Server 和 Client 會採用對稱祕鑰加密。(對稱加密時間性能優)(圖二中 pre-master/change_cipher_spec/encrypted_handshake_message 過程)
7)數據傳輸:Server 和 Client 採用對稱祕鑰加密解密數據。

3.2 創建一個自簽名的SSL證書(X509)



作者:金波_xu
鏈接:https://www.jianshu.com/p/4a3280585353
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章