目前大多數網站所使用的“HTTPS”,和之前的“HTTP”就多了一個“S”,而這個“S”就是SSL,它是一種網絡安全協議,用於加密瀏覽器和服務器之間傳輸的數據信息,其主要功能就是身份認證和數據傳輸加密。
那麼你知道SSL是如何工作的嗎?
SSL的工作流程
客戶使用HTTPS的URL訪問Web服務器,要求與Web服務器建立SSL連接。
Web服務器收到客戶端請求後,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。
客戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級,也就是信息加密的等級。
客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然後利用網站的公鑰將會話密鑰加密,並傳送給網站。
Web服務器利用自己的私鑰解密出會話密鑰。
Web服務器利用會話密鑰加密與客戶端之間的通信。
整個過程經過握手之後就能建立加密鏈接,數據傳輸都是經過加密後的信息。
SSL握手的含義
建立安全連接的過程稱爲“SSL握手”。
這裏所說的“握手”並非我們傳統意義上的握手,SSL握手過程涉及三個步驟:交換加密功能,服務器驗證和密鑰傳輸。
- 交換加密功能
正如我們在見到某人時所做的一樣,客戶端和服務器也會互相問好。
客戶端向服務器發送一條“Client Hello”的消息,包含一些SSL證書信息。爲響應此客戶端的“Client Hello”消息,服務器通過發送“Server Hello”對其作出響應,同樣該消息也包含相應的證書信息。
- 服務器驗證
在客戶端和服務器之間已建立安全連接後,接下來就是客戶端驗證服務器身份的階段。
SSL證書中包含所有者/組織、其位置的公鑰、有效日期等信息,客戶端確保有效的證書頒發機構CA已驗證證書。
- 密鑰傳輸
客戶端驗證並驗證服務器後,雙方就該共享密鑰了。
服務器驗證完成後,客戶端使用公共密鑰生成預主密鑰,然後此預主密鑰被髮送到服務器,服務器使用其私鑰解密該預主密鑰。
這樣,客戶端和服務器就會計算出一個新密鑰,此主密鑰用於加密和解密在客戶端和服務器之間傳輸的信息。