HTTPS 工作流程梳理

2021-09-01 14:49:21 字數 1609 閱讀 4514

客戶端。通常是瀏覽器(chrome、ie、firefox等),也可以自己編寫的各種語言的客戶端程式。

服務端。一般指支援https的**,比如github、支付寶。

ca(certificate authorities)機構。https證書簽發和管理機構,比如symantec、comodo、godaddy、globalsign。

下圖裡我畫出了這幾個角色:

認證正在訪問的**。什麼叫認證**?比如你正在訪問支付寶,怎樣確定你正在訪問的是阿里巴巴提供的支付寶而不是假冒偽劣的釣魚**呢?

保證所傳輸資料的私密性和完整性。眾所周知,http是明文傳輸的,所以處在同一網路中的其它使用者可以通過網路抓包來竊取和篡改資料報的內容,甚至運營商或者wifi提供者,有可能會篡改http報文,新增廣告等資訊以達到盈利的目的。

這一節通過介紹https協議的工作流程,來說明https是如何達成自己的兩個目的的。下圖我畫出了https的工作流程,注意,這只是原理示意圖,並不是詳細的協議解析。

可以看到工作流程,基本分為三個階段:

認證伺服器。瀏覽器內建乙個受信任的ca機構列表,並儲存了這些ca機構的證書。第一階段伺服器會提供經ca機構認證頒發的伺服器證書,如果認證該伺服器證書的ca機構,存在於瀏覽器的受信任ca機構列表中,並且伺服器證書中的資訊與當前正在訪問的**(網域名稱等)一致,那麼瀏覽器就認為服務端是可信的,並從伺服器證書中取得伺服器公鑰,用於後續流程。否則,瀏覽器將提示使用者,根據使用者的選擇,決定是否繼續。當然,我們可以管理這個受信任ca機構列表,新增我們想要信任的ca機構,或者移除我們不信任的ca機構。

協商會話金鑰。客戶端在認證完伺服器,獲得伺服器的公鑰之後,利用該公鑰與伺服器進行加密通訊,協商出兩個會話金鑰,分別是用於加密客戶端往服務端傳送資料的客戶端會話金鑰,用於加密服務端往客戶端傳送資料的服務端會話金鑰。在已有伺服器公鑰,可以加密通訊的前提下,還要協商兩個對稱金鑰的原因,是因為非對稱加密相對複雜度更高,在資料傳輸過程中,使用對稱加密,可以節省計算資源。另外,會話金鑰是隨機生成,每次協商都會有不一樣的結果,所以安全性也比較高。

加密通訊。此時客戶端伺服器雙方都有了本次通訊的會話金鑰,之後傳輸的所有http資料,都通過會話金鑰加密。這樣網路上的其它使用者,將很難竊取和篡改客戶端和服務端之間傳輸的資料,從而保證了資料的私密性和完整性。

如果你是乙個伺服器開發者,想使用https來保護自己的服務和使用者資料安全,你可以按照以下流程來操作。

說是討論https,事實上https就是http跑在ssl或者tls上,所以本文討論的原理和流程其實是ssl和tls的流程,對於其它使用ssl或者tls的應用層協議,本文內容一樣有效。

本文只討論了客戶端驗證服務端,服務端也可以給客戶端頒發證書並驗證客戶端,做雙向驗證,但應用沒有那麼廣泛,原理類似。

由於採用了加密通訊,https無疑要比http更耗費伺服器資源,這也是很多公司明明支援https卻預設提供http的原因。

HTTPS 工作流程梳理

客戶端。通常是瀏覽器 chrome ie firefox等 也可以自己編寫的各種語言的客戶端程式。服務端。一般指支援https的 比如github 支付寶。ca certificate authorities 機構。https證書簽發和管理機構,比如symantec comodo godaddy g...

https工作流程

對稱加密 加密和解密都使用同乙個金鑰 非對稱加密 加密和解密使用不同的金鑰 如 a與b使用非對稱加密方式通訊,a使用b的公鑰對明文加密後傳送給b,b使用自己的私鑰解密得到明文資訊 b用a的公鑰對明文加密然後把密文傳送給a,a接收到後使用自己的私鑰進行解密得到b傳送的資訊 https在協商會話金鑰時使...

https的工作流程

1 客戶端向伺服器提出請求,發出ssl握手訊號。2 伺服器發出回應,並出示伺服器證書 公鑰 顯示伺服器站點身份。3 客戶端驗證伺服器證書,並生成乙個隨機的會話金鑰,金鑰長度達到128位。4 客戶端用伺服器的公鑰加密該會話金鑰,產生加密會話金鑰。5 客戶端對該會話金鑰進行簽名,產生客戶端簽名。6 客戶...