Https 客户端与服务器交互过程梳理(转)
?
本文試圖以通俗易通的方式介紹Https的工作原理,不糾結具體的術語,不考證嚴格的流程。我相信弄懂了原理之后,到了具體操作和實現的時候,方向就不會錯,然后條條大路通羅馬。閱讀文本需要提前大致了解對稱加密、非對稱加密、信息認證等密碼學知識。如果你不太了解,可以閱讀Erlang發明人Joe Armstrong最近寫的Cryptography Tutorial。大牛出品,通俗易懂,強力推薦。
Https涉及到的主體
下圖里我畫出了這幾個角色:
發明Https的動機
Https的工作流程
這一節通過介紹Https協議的工作流程,來說明Https是如何達成自己的兩個目的的。下圖我畫出了Https的工作流程,注意,這只是原理示意圖,并不是詳細的協議解析。
可以看到工作流程,基本分為三個階段:
認證服務器。瀏覽器內置一個受信任的CA機構列表,并保存了這些CA機構的證書。第一階段服務器會提供經CA機構認證頒發的服務器證書,如果認證該服務器證書的CA機構,存在于瀏覽器的受信任CA機構列表中,并且服務器證書中的信息與當前正在訪問的網站(域名等)一致,那么瀏覽器就認為服務端是可信的,并從服務器證書中取得服務器公鑰,用于后續流程。否則,瀏覽器將提示用戶,根據用戶的選擇,決定是否繼續。當然,我們可以管理這個受信任CA機構列表,添加我們想要信任的CA機構,或者移除我們不信任的CA機構。
協商會話密鑰。客戶端在認證完服務器,獲得服務器的公鑰之后,利用該公鑰與服務器進行加密通信,協商出兩個會話密鑰,分別是用于加密客戶端往服務端發送數據的客戶端會話密鑰,用于加密服務端往客戶端發送數據的服務端會話密鑰。在已有服務器公鑰,可以加密通訊的前提下,還要協商兩個對稱密鑰的原因,是因為非對稱加密相對復雜度更高,在數據傳輸過程中,使用對稱加密,可以節省計算資源。另外,會話密鑰是隨機生成,每次協商都會有不一樣的結果,所以安全性也比較高。
加密通訊。此時客戶端服務器雙方都有了本次通訊的會話密鑰,之后傳輸的所有Http數據,都通過會話密鑰加密。這樣網路上的其它用戶,將很難竊取和篡改客戶端和服務端之間傳輸的數據,從而保證了數據的私密性和完整性。
使用Https的流程
如果你是一個服務器開發者,想使用Https來保護自己的服務和用戶數據安全,你可以按照以下流程來操作。
總結
http://www.cnblogs.com/xinzhao/p/4949344.html
?
總結
以上是生活随笔為你收集整理的Https 客户端与服务器交互过程梳理(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu Server 安装部署 C
- 下一篇: 枚举与可选值