HTTPS SSL加密原理

Http和Https你知道多少?

首先,這兩個協議是工作以後遇到和用過最多的協議,必須搞懂搞明白。咱們來看看他們的基本定義。

HTTP協議

Http: 超文本傳輸協議(英語:HyperText Transfer Protocol,縮寫:HTTP)是一種用於分佈式、協作式和超媒體信息系統的應用層協議[1]。HTTP是萬維網的數據通信的基礎。

最初設計目的:爲了提供一種發佈和接受HTML頁面的方法。

基於協議:TCP/IP協議。

連接過程:由HTTP客戶端發起一個請求,創建一個到服務器指定端口(默認是80端口)的TCP連接。HTTP服務器監聽端口的請求。一旦收到請求,服務器會向客戶端返回一個狀態,比如"HTTP/1.1 200 OK",以及返回的內容,如請求的文件、錯誤消息、或者其它信息。

客戶端請求:

GET / HTTP/1.1
Host: www.google.com

服務器應答:

HTTP/1.1 200 OK
Content-Length: 3059
Server: GWS/2.0
Date: Sat, 11 Jan 2003 02:44:04 GMT
Content-Type: text/html
Cache-control: private
Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy
X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Connection: keep-alive

重要進化史:HTTP1.0不支持長鏈接,一次連接對應一次請求一次應答。HTTP1.1支持長鏈接,客戶端可多次請求,接收多次應答,不用重複TCP三次握手。

HTTP缺點:信息都是明文傳輸。很不安全,容易半路被截獲。

怎麼辦??????????

HTTPS誕生了。

HTTPS協議 = HTTP + SSL

雖然很多人都知道,但是還是要把基本定義大概說一下,便於理解。大神可自動跳過此文章。😄

Https:超文本傳輸安全協議(英語:HyperText Transfer Protocol Secure,縮寫:HTTPS;常稱爲HTTP over TLS、HTTP over SSL或HTTP Secure)是一種通過計算機網絡進行安全通信的傳輸協議。
設計目的:提供對網站服務器的身份認證,加密數據傳輸。其實就是防止網站冒充官方網站,防止你登錄網站的隱私被小人偷窺。
默認端口號:443

👇講解下SSL的原理

重要加密算法:不對稱加密,也就是RSA。

假定:客戶端是A,服務器是B,公鑰是M,私鑰是P。
具體工作流程如下:

  1. 服務器B生成一個公鑰M,一個私鑰P,私鑰保存,公鑰上傳到CA機構,經過CA(一個大家信任的權威機構)的私鑰簽名後,你下載下來有了自己的數字證書cer。當然也可以自己製作證書,只要客戶端認可就行。
  2. 客戶端A打開瀏覽器訪問服務器B之前,先下載CA的數字證書,裏面是CA的公鑰。
  3. 客戶端訪問瀏覽器,建立與服務器B的連接,連接到默認端口443上。
  4. 服務器B將第一步申請CA得到的數字證書cer發送給客戶端A。A通過第2步得到的CA的數字證書裏的公鑰解密cer,如果成功解密,那A就認爲的確是服務器B發過來的。此時也得到了服務器B的公鑰。
  5. 接下來他們的對話就安全了。客戶端A用第3步得到的公鑰加密一段隨機信息AES-key也就是密鑰,然後發送到B。B收到之後用私鑰解密,解密後的數據就是接下來對話的密鑰AES-key。比如我們用AES算法。
  6. 客戶端A請求數據,請求之前用密鑰AES-key通過AES算法加密請求信息,然後發送給B。
  7. B收到後用第4步收到的AES-key解密信息。讀取後返回響應信息。
  8. 之後的對話和4,5,6,類似。

有人會問:爲什麼不一隻用RSA算法呢,因爲RSA加密雖然更安全,但是加密速度太慢,對於大數據量交互的情況不太適合,所以一般只用於密鑰的傳輸。真正的對話還是要用對稱加密,比如AES。

我的理解就到此結束了。有問題可留言,也可指正。謝謝。(有新的理解我也會及時更新的)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章