https服務的原理和實現

2021-09-20 11:28:44 字數 2470 閱讀 9225

目前大部分大型**已經全部切換到了https服務,所以很有必要了解整個https的原理,https是如何保證資訊保安的。這裡希望大家對以下部分名詞有一定的了解:

了解https的原理,最好的方法就是走一遍流程,理論上的流程和原理通過以下幾點來解釋:

證書申請

證書信任

密文通訊

https的關鍵之一就是ssl證書,為了保證證書的安全有效性,在各類委員會/廠商之間合作,通過類似圓桌會議來形成若干權威的認證機構【頂級認證機構可以有若干附屬的二級、**...認證機構】,想要得到受信任的證書,就需要向ca機構提交證書簽名請求 (csr, certificate signing request)。過程如下:

證書申請者【一般是公司、個人開發者等】需要使用加密演算法【大部分是rsa演算法】來生成公鑰、私鑰,其中私鑰儲存在伺服器上,不提供給任何人。

生成證書簽名請求 (csr, certificate signing request),需要提供一些申請者相關的資訊【網域名稱、公鑰等資訊】,傳送給ca機構請求他們的簽名,經過他們簽名才能成為被信任的證書。

ca機構對申請者進行驗證【這裡不同型別收費不同,驗證方式也會不同】,驗證通過後,將會在證書中新增部分資訊【證書頒發機構、有效期、指紋/hash演算法、簽名演算法】,形成新的證書。

對新的證書進行簽名,步驟如下:

所以最後的證書包括的內容如下:

在申請到受信任的證書後,客戶端是怎麼知道這些證書是值得信任的呢,不同瀏覽器和系統的具體實現不太一樣,但是基本的方式差不多,都是在系統或者瀏覽器中事先準備好權威的ca機構的相關資訊[公鑰、常使用的各類hash、簽名、加密演算法等]。具體過程如下:

瀏覽器訪問某https服務,帶上瀏覽器自身支援的一系列cipher suite(金鑰演算法套件,後文簡稱cipher)[c1,c2,c3, …]發給伺服器【演算法套件包括非對稱演算法、對稱演算法、hash演算法】;

伺服器接收到瀏覽器的所有cipher後,與自己支援的套件作對比,如果找到雙方都支援的cipher【雙方套件中都能支援的最優先演算法】,則告知瀏覽器,並返回自己的證書;

瀏覽器確認和服務端後續的密文通訊的加密演算法,同時對證書進行認證;

使用證書中的認證機構【可能是二級、**機構】的公鑰【系統、瀏覽器事先準備好的】按照證書中的簽名演算法進行解密【認證機構使用私鑰加密的密文只能通過該認證機構的公鑰進行解密】,解密獲取hash值;

使用證書中的hash/摘要演算法對證書資訊【證書簽名除外的資訊[伺服器公鑰、有效期等]】hash值計算,和4中解密的hash值進行對比,如果相等,表示證書值得信任;【通過數字簽名來保證證書內容沒有被篡改】。

在上文的流程之後【證書信任,客戶端和服務端握手中需要的非對稱演算法握手資訊驗證的hash演算法正文傳輸的對稱加密】,就是具體的通訊過程:

客戶端信任了服務端的證書,並和服務端確認了雙方的加密演算法【握手中需要的非對稱演算法握手資訊驗證的hash演算法正文傳輸的對稱加密】;

客戶端生成隨機數,通過證書中的公鑰按照約定的非對稱加密演算法進行加密,得到加密的隨機數秘鑰,同時將之前所有的通訊資訊【秘鑰演算法套件、證書等所有的通訊內容】按照約定的hash/摘要演算法獲取hash值,並使用隨機數和協商好的對稱加密演算法進行簽名加密,將隨機數秘鑰和加密簽名傳送到服務端。

服務端收到隨機數秘鑰和加密簽名,先使用私鑰將隨機數按照約定的非對稱解密演算法進行解密,獲取隨機數,同時使用隨機數按照約定的對稱解密演算法進行解密,獲取待驗證的hash值,將之前的通訊訊息體【秘鑰演算法套件、證書等所有的通訊內容】按照約定的hash/摘要演算法獲取hash值,與剛才解密獲取的待驗證的hash值對比,驗證加密成功與否。

成功以後,伺服器再次將之前所有的通訊資訊【秘鑰演算法套件、證書等所有的通訊內容】按照約定的hash/摘要演算法獲取hash值,並使用隨機數和協商好的對稱加密演算法進行簽名加密,將隨機數秘鑰傳送到客戶端,

客戶端使用隨機數按照約定的對稱解密演算法進行解密,獲取待驗證的hash值,將之前的通訊訊息體【秘鑰演算法套件、證書等所有的通訊內容】按照約定的hash/摘要演算法獲取hash值,與剛才解密獲取的待驗證的hash值對比,驗證加密成功與否,

成功的話整個鏈結過程完成,之後將使用隨機數和約定的對稱加密演算法進行密文通訊,【如果上面的任何步驟出現問題,都將會結束整個握手過程,導致建立安全連線失敗】。

HTTPS 的原理和 NodeJS 的實現

http協議採用明文傳輸資料,當涉及敏感資訊的傳送時,極有可能會受到竊聽或者中間人的攻擊。https是http與ssl tls的組合,即使用加密通訊以及網路伺服器的身份鑑定來進行資訊的安全傳輸。其核心有二 https鏈結的建立過程中涉及到伺服器端證書 客戶端證書 可選 伺服器端的非對稱秘鑰以及後續通...

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...