HTTPS證書原理

使用內網時,發現對於http協議的網站正常訪問,但https網站訪問異常,這種情況需要安裝內部https證書並關掉該wifi的手動代理

因爲正式環境HTTPS證書泄露可能導致嚴重的安全問題,因此需要收攏正式環境HTTPS證書權限。開發和測試環境使用自簽名證書。

回顧HTTP和HTTPS

兩者都使用TCP協議,都用於在Web瀏覽器和網站服務器之間傳遞信息。
區別

  • HTTP默認使用TCP協議80端口,HTTPS默認使用443端口。
  • HTTPS也是經由HTTP來進行通信,只是多了加密數據包的流程(SST/TLS),也可以理解爲HTTPS=HTTP+SSL。HTTPS出現的原因就是在於對網站服務器的身份進行認證,保護交換數據的隱私及完整性,將HTTP中的明文傳輸轉爲密文傳輸。
  • 使用HTTPS協議需要用的CA【數字證書認證機構】
  • HTTP 頁面響應速度比 HTTPS 快,主要是因爲 HTTP 使用 TCP 三次握手建立連接,客戶端和服務器需要交換 3 個包,而 HTTPS除了 TCP 的三個包,還要加上 ssl 握手需要的 9 個包,所以一共是 12 個包。
理解名詞:

報文摘要:將報文按雙方約定的HASH算法計算得到一個固定位數的報文摘要。在數學上保證:只要改動報文中任何一位,重新計算出的報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。
數字簽名:數字簽名:將報文摘要值用發送者的私人祕鑰加密後得到的密文即爲數字簽名。
數字證書:原報文和數字簽名放在一起就是數字證書
數字簽名和數字證書

證書的作用:服務端發送給客戶端,客戶端從中獲取原報文以及公鑰,根據公鑰配合服務器的私鑰使用非對稱加密傳輸數據,保證信道安全。

CA證書有個自上到下的信任鏈,下級 CA 信任上級 CA ,下級 CA 由上級 CA 頒發證書並認證,如圖:


CA公鑰就是從上級證書中取出的

證書包含了版本號、序列號、簽名算法、頒發者、有效期、主體、主體公鑰、主體公鑰算法、簽名值等信息,其中,除簽名外其他都是以明文形式提供,包括主體公鑰,這點很重要,即我們是直接從證書中取出服務端公鑰的。

證書的生成和驗證

生成:

  • 服務端會先生成一對公私鑰,用於非對稱加密算法,然後將公鑰和自身的一些信息交給CA機構
  • CA機構收到信息也就是data後,使用特定的哈希算法得到摘要值HASH
  • 隨後CA用自己的私鑰將摘要值HASH加密後得到數字簽名Signature
  • 最後將Signature和data一起生成一張證書

驗證:

  • 客戶端在拿到證書後,首先將data用指定的哈希算法生成一段摘要Hash1
  • 然後再取出數字簽名Signature,用CA機構的公鑰使用指定的算法解密得到摘要值Hash2
  • 最後對比Hash1和Hash2是否相等,如果相等則驗證成功,取出服務端公鑰後繼續HTTPS的建立,否則驗證失敗,HTTPS建立中斷
    這裏不等的原因可能在於data在傳輸過程中被篡改、CA中公鑰被篡改
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章