【轉】網絡安全——一圖看懂HTTPS創建過程

閱讀目錄html

關於網絡安全加密的介紹能夠看以前文章:算法

1. 網絡安全——數據的加密與簽名,RSA介紹
2. Base64編碼、MD五、SHA1-SHA5十二、HMAC(SHA1-SHA512)
3. When I see you again(DES、AES、RSA、Base6四、MD5加密原理介紹,代碼實現)編程

HTTPS創建過程至關複雜,下圖爲示意圖,能夠有總體認識,通常咱們編程知道這些已足夠。瀏覽器

https創建過程

若是你想仿照HTTPS實現相似加密,能夠閱讀下具體過程,做爲參照緩存

準備工做(對應圖中prepare1234)

能夠看到,在客戶端向服務器發起請求前,還有一些準備工做要作,或者說是有一些工做已經作好了。安全

  • 從CA證書頒發機構,獲取數字證書。
    • 服務器:生成一對公私鑰S.pub,S.pri,私鑰本身保留,用於解密和簽名,不能外泄。將公鑰S.pub,身份信息,傳給CA(Certificate Authority)機構;
    • CA機構:也有公私鑰C.pub,C.pri;由S.pub,身份信息另外附加CA簽名生成數字證書(簽名使用C.pri進行簽名)
    • 將數字證書頒發給申請者(服務器)
  • 客戶端(好比咱們常用的瀏覽器),爲了安全性,會內置一份CA根證書,它包含公鑰C.pup,用於對數字證書驗證

發起連接

https使用的是443端口,而http使用的是80端口服務器

TCP端口號是一個2字節的整型,處於TCP報文段的前四個字節(2字節源端口號,2字節目的端口號)。網絡

很明顯範圍是0~65535。其中0~1023具備特殊意義,已經被綁定,好比上面說的443,80,還有ftp的21端口。從1024~49151也具備特殊含義,可是尚未被用完,好比8080端口重定向。剩下的咱們就能夠隨便使用,自定義了。session

其實以前在嵌入式開發中,沒有鏈接外網,也沒有使用瀏覽器等等這些。因此端口徹底自定義隨便用,不用擔憂衝突:)。dom

下面的過程爲具體詳細一點的過程,若是不想看,能夠徹底只看示意圖便可,對咱們平時開發用處並不大。或者你在用wireshark相似的抓包工具時看的抓狂不認識,能夠看看(反正我用Charles抓包):

1 客戶端發起請求(對應圖中1)

一樣須要三次握手,創建TCP鏈接(毫無疑問HTTPS也是基於TCP的)

2 客戶端發送Client Hello包(對應圖中2)

  • 隨機數

裏面有1970年1月1日到如今的秒數,後面還有一個客戶端發來的隨機數Client.random

  • Session ID

若是客戶端與服務器費盡周折創建了一個HTTPS連接,剛建完就斷了,也太惋惜,因此用Session ID將其保存,若是下次再來能夠直接使用以前的連接進行對話(對稱密鑰)。

  • 密文族

告訴服務器,本身支持的加密算法種類

  • Server_name

3 Server Hello(對應圖中2)

  • 隨機數:對應服務器時間,服務器sever.random
  • Seesion ID,若是客戶端發給服務器的session ID在服務端有緩存,服務端會嘗試使用這個session;不然服務器會啓用新的並返回給客戶端;
  • 服務器挑選一個密文族

4 Certificate(對應圖中2)

服務器終於發來咱們想要的數字證書,包含了:簽發機構、過時時間、主題名稱、公共密鑰信息、指紋信息等等

證書信息

5 Server Hello Done(對應圖中2)

服務器發送結束

6 客戶端驗證(對應圖中3)

客戶端從內置的CA根證書獲取C.pub,對服務器發送來的數字證書進行驗籤,若是一致,說明證書是CA頒發的(前提是C.pub是真實的,確實是CA機構的公鑰)。而後看看證書是否過時,域名是否匹配

7 生成對稱密鑰(對應圖中四、五、6)

客戶端根據以前的:Client.random + sever.random + pre-master生成對稱密鑰

通過S.pub加密發送給服務器,以後便可經過對稱密鑰進行通信。(就是以前咱們熟悉的http)

最後

在整個過程當中,一共涉及2對公私密鑰對,一對由服務器產生,主要用於加密,一對由CA產生,主要用於簽名。

爲何要多一個CA呢?

假設沒有CA,那麼若是服務器返回的包含公鑰的包被hack截取,而後hack也生成一對公私鑰,他將本身的公鑰發給客戶端。hack獲得客戶端數據後,解密,而後再經過服務器的公鑰加密發給服務器,這樣數據就被hack獲取。

有了CA後,客戶端根據內置的CA根證書,很容易識別出hack的公鑰不合法,或者說hack的證書不合法。

from:http://www.cnblogs.com/mddblog/p/6948980.html

相關文章
相關標籤/搜索