1. 程式人生 > >https原理簡述

https原理簡述

為什麼要使用https?

   因為http協議下,資料都是明文傳輸的,容易被截獲、修改轉發。

https實現原理:

  概要:通過非對稱加密資料進行互動協商獲得對稱加密演算法與金鑰的過程

  • 1)瀏覽器將自己支援的一套加密規則請求伺服器。 
  • 2)伺服器從中選出一組加密演算法與HASH演算法,並將自己的身份資訊以證書的形式發回給瀏覽器。證書裡面包含了網站地址,加密公鑰,以及證書的頒發機構等資訊。  
  • 3)瀏覽器獲得網站證書之後瀏覽器要做以下工作: 
    •  驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網站地址是否與正在訪問的地址一致等),如果證書受信任,則瀏覽器欄裡面會顯示一個小鎖頭,否則會給出證書不受信的提示。 

    •  如果證書受信任,或者是使用者接受了不受信的證書,瀏覽器會生成一串隨機數的密碼,並用證書中提供的公鑰加密。 
    • 
 使用約定好的HASH演算法計算握手訊息,並使用生成的隨機數對訊息進行加密,最後將之前生成的所有資訊請求給伺服器。 
  •  
4)伺服器接收瀏覽器發來的資料之後要做以下的操作: 
a) 使用自己的私鑰將資訊解密取出密碼,使用密碼解密瀏覽器發來的握手訊息,並驗證HASH是否與瀏覽器發來的一致。 
b) 使用密碼加密一段握手訊息,傳送給瀏覽器。 
  •  
5)瀏覽器解密並計算握手訊息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,之後所有的通訊資料將由之前瀏覽器生成的隨機密碼並利用對稱加密演算法進行加密。

疑問:

  為什麼最終使用對稱加密演算法加密資料?

  因為非對稱加密演算法加密資料的消耗遠遠大於對稱加密演算法

  為什麼需要ca證書與數字簽名?

  因為對資料進行加密,客戶端與伺服器之間必須要一個協商過程:

    使用對稱加密則要協商加密演算法與金鑰,無法保證協商的過程的資料安全

    使用非對稱加密無法保證公鑰傳遞安全

  使用第三方證書為什麼可以避免這個問題?

  因為使用第三方證書後,避免了公鑰的傳遞這個問題。公鑰內建在瀏覽器的ca證書列表裡。(瀏覽求通過伺服器傳送過來ca證書去匹配瀏覽器內建的ca上級證書獲得公鑰驗證簽名)

  瀏覽器是如何驗證ca證書與數字簽名?

  瀏覽器收到伺服器傳送的證書後,需要驗證其真實性。而證書的簽名是通過簽名演算法和上級CA的私鑰生成的,並非很多文章裡簡單說的靠CA私鑰生成。瀏覽器需要用上級CA的公鑰才能解密簽名,並與生成的指紋對比。(上級CA即頒發證書的第三方機構,上級CA證書是內置於瀏覽器或系統)