天天看點

圖解https協定

我們都知道HTTPS能夠加密資訊,以免敏感資訊被第三方擷取。是以很多銀行網站或電子郵箱等等安全級别較高的服務都會采用HTTPS協定。

  HTTPS簡介

  HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密資訊的子產品。服務端和用戶端的資訊傳輸都會通過TLS進行加密,是以傳輸的資料都是加密後的資料。具體是如何進行加密,解密,驗證的,且看下圖。

圖解https協定

  1. 用戶端發起HTTPS請求

  這個沒什麼好說的,就是使用者在浏覽器裡輸入一個https網址,然後連接配接到server的443端口。

  2. 服務端的配置

  采用HTTPS協定的伺服器必須要有一套數字證書,可以自己制作,也可以向組織申請。差別就是自己頒發的證書需要用戶端驗證通過,才可以繼續通路,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。這套證書其實就是一對公鑰和私鑰。如果對公鑰和私鑰不太了解,可以想象成一把鑰匙和一個鎖頭,隻是全世界隻有你一個人有這把鑰匙,你可以把鎖頭給别人,别人可以用這個鎖把重要的東西鎖起來,然後發給你,因為隻有你一個人有這把鑰匙,是以隻有你才能看到被這把鎖鎖起來的東西。

  3. 傳送證書

  這個證書其實就是公鑰,隻是包含了很多資訊,如證書的頒發機構,過期時間等等。

  4. 用戶端解析證書

  這部分工作是有用戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成一個随機值。然後用證書對該随機值進行加密。就好像上面說的,把随機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的内容。

  5. 傳送加密資訊

  這部分傳送的是用證書加密後的随機值,目的就是讓服務端得到這個随機值,以後用戶端和服務端的通信就可以通過這個随機值來進行加密解密了。

  6. 服務段解密資訊

  服務端用私鑰解密後,得到了用戶端傳過來的随機值(私鑰),然後把内容通過該值進行對稱加密。所謂對稱加密就是,将資訊和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法擷取内容,而正好用戶端和服務端都知道這個私鑰,是以隻要加密算法夠彪悍,私鑰夠複雜,資料就夠安全。

  7. 傳輸加密後的資訊

  這部分資訊是服務段用私鑰加密後的資訊,可以在用戶端被還原。

  8. 用戶端解密資訊

  用戶端用之前生成的私鑰解密服務段傳過來的資訊,于是擷取了解密後的内容。整個過程第三方即使監聽到了資料,也束手無策。

繼續閱讀