HTTPS系列一:HTTPS簡介
HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協議 它是一個安全通信通道,它基於HTTP開發,用於在客戶計算機和服務器之間交換信息。它使用安全套接字層(SSL)進行信息交換,簡單來說它是HTTP的安全版,是使用 TLS/SSL 加密的 HTTP 協議。
HTTPS系列二:TLS/SSL如何工作?
TLS/SSL 全稱安全傳輸層協議 Transport Layer Security, 是介於 TCP 和 HTTP 之間的一層安全協議,不影響原有的 TCP 協議和 HTTP 協議,所以使用 HTTPS 基本上不需要對 HTTP 頁面進行太多的改造。TSL/SSL的工作主要包括SSL握手和數據傳輸加密,涉及到的加密分為兩種:<strong>非對稱加密和對稱加密,很懵逼,來帶你看看下面的兩張圖:
- 非對稱加密:
非對稱加密使用一對密鑰來加密和解密數據。其中一個密鑰會作為公鑰發送給通信的對手方(Client);另一個密鑰則作為私鑰保存(Server)。在非對稱加密算法下,我們可以使用私鑰來加密數據,只有與該私鑰對應的公鑰才能用來解密這份加密後的數據。
比如web服務器想發送“hello world”給客戶端,又不想讓別人看見,就可以用私鑰加密“hello world”,傳輸到客戶端,客戶端收到數據後用公鑰就可以解密出來.
實際TSL/SSL使用非對稱加密方式來發起SSL握手,
SSL握手
SSL通信始於SSL握手。<strong>SSL握手是一種非對稱加密方式,它允許瀏覽器驗證服務器,獲取公鑰並在傳輸實際數據前建立起一個安全的連接。具體握手的過程參考如下圖所示:
SSL握手結束後,<strong>客戶端和服務器都拿到了一個有效的session key。這個session key將被用來在後續的數據傳輸過程中對數據進行加密和解密,這就是握手的過程,主要產生"會話秘鑰".
2.對稱加密
在對稱加密協議下,加密和解密的密鑰是用一個,數據的發送方和接收方都應該持有這個密鑰。SSL協議下,在通信雙方完成SSL握手之後,會使用session key來作為對稱加密密鑰進行數據傳輸。
其它比較常見的對稱加密算法還包括AES-128,AES-192和AES-256。
SSL進行數據傳輸
SSL協議下的實際數據傳輸,主要是基於session key的對稱加密算法來實現的。
SSL總體上依靠非對稱和對稱加密算法來工作。在現實中,SSL還需要依賴PKI(Public Key Infrastructure)來完成通信。
總結下TLS/SSL 的基本工作方式是,
第一階段:客戶端使用非對稱加密與服務器進行通信,實現身份驗證並協商對稱加密使用的密鑰,這階段叫會話秘鑰磋商,
第二階段:然後對稱加密算法採用協商密鑰對信息以及信息摘要進行加密通信,不同的節點之間(客戶端與服務器)採用的對稱密鑰不同,從而可以保證信息只能通信雙方識別。
後續為學習下如何下載申請CA證書,以及開源openssl使用,敬請期待.
引用參考:
https://www.tutorialsteacher.com/https/how-ssl-works
https://zhuanlan.zhihu.com/p/101058747?utm_source=wechat_session&utm_medium=social&utm_oi=630166279156273152
https://blog.csdn.net/cout__waht/article/details/80859369?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
閱讀更多 高級程序猿 的文章