圖解HTTPS建立過程

來源:互聯網
上載者:User

標籤:sdn   機構   base64   hello   版本   連接埠號碼   三次   prepare   md5加密   

閱讀目錄

  • 準備工作(對應圖中prepare1234)
  • 發起連結
  • 最後

關於網路安全加密的介紹可以看之前文章:

1. 網路安全——資料的加密與簽名,RSA介紹
2. Base64編碼、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)
3. When I see you again(DES、AES、RSA、Base64、MD5加密原理介紹,代碼實現)

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.pri,用於對數位憑證驗證
發起連結

https使用的是443連接埠,而http使用的是80連接埠

TCP連接埠號碼是一個2位元組的整型,處於TCP報文段的前四個位元組(2位元組源連接埠號碼,2位元組目的連接埠號碼)。

很明顯範圍是0~65535。其中0~1023具有特殊意義,已經被綁定,比如上面說的443,80,還有ftp的21連接埠。從1024~49151也具有特殊含義,但是還沒有被用完,比如8080連接埠重新導向。剩下的我們就可以隨便使用,自訂了。

其實之前在嵌入式開發中,沒有串連外網,也沒有使用瀏覽器等等這些。所以連接埠完全自訂隨便用,不用擔心衝突:)。

下面的過程為具體詳細一點的過程,如果不想看,可以完全只看即可,對我們平時開發用處並不大。或者你在用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 產生對稱金鑰(對應圖中4、5、6)

用戶端根據之前的:Client.random + sever.random + pre-master產生對稱金鑰

經過S.pub加密發送給伺服器,之後即可通過對稱金鑰進行通訊。(就是之前我們熟悉的http)

最後

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

為什麼要多一個CA呢?

假設沒有CA,那麼如果伺服器返回的包含公開金鑰的包被hack截取,然後hack也產生一對公私密金鑰,他將自己的公開金鑰發給用戶端。hack得到用戶端資料後,解密,然後再通過伺服器的公開金鑰加密發給伺服器,這樣資料就被hack擷取。

有了CA後,用戶端根據內建的CA根憑證,很容易識別出hack的公開金鑰不合法,或者說hack的認證不合法。

 

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

標題中的新版指:版本 56.0.2924.87 (64-bit)

原來的版本可以點擊綠色的小鎖進入查看頁面,新版的已經改了

新版的進入方式為F12-->Security選項卡(找不到的點右箭頭>>),然後點擊View certificate

  

 

圖解HTTPS建立過程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.