天天看點

【面試題精選】Http與Https的差別及SSL安全協定解析

一、Http 和 Https 的相關概念

Http: Hyper Text Transfer Protocol,即超文本傳輸協定。Http 協定是目前網絡上應用最廣泛的一種網絡協定,所有的 www 檔案都必須遵守這個協定,而Http在傳輸資訊時,資訊都是明文的格式,一些隐私資訊很容易洩露,是以就有了Https。

Https: Hyper Text Transfer Protocol Secure,即超文本傳輸安全協定。 Https 是以安全為目标的 Http 協定,簡單來說就是一個安全版的 Http。它是在 Http 協定之下加上了一層安全協定,這種安全協定稱為 SSL (Secure Sockets Layer),即安全套接字。它通過SSL對資訊進行加密,確定資訊不會被三方截獲。

二、Http 和 Https 的實體模型

上面我們講到了 Https 是在 Http 協定之下加了一層SSL安全協定。那麼 Http 本身的實體模型是什麼樣的呢?在計算機網絡中,Http 協定在應用層使用,下層分别是傳輸層,網絡層,資料鍊路層和實體層。我們來看圖:

【面試題精選】Http與Https的差別及SSL安全協定解析

注意: 上圖隻是為了說明 Https 和 Http 在實體模型上的差別,并未把每層的協定完全列舉。

那麼 Https 跟 Http的實體模型有何不同呢?我們來看圖:

【面試題精選】Http與Https的差別及SSL安全協定解析

這樣就一目了然了,Https 在往下面的運輸層傳輸的時候要通過一層SSL安全協定。

三、Http 和Https 的差別

通過以上分析,我們得出一下幾點不同:

(1)https協定需要到ca申請證書,一般免費證書很少,需要交費(下面會說到)。

(2)http是超文本傳輸協定,資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協定。

(3)http和https使用的是完全不同的連接配接方式,用的端口也不一樣,前者是80,後者是443。

(4)http的連接配接很簡單,是無狀态的;HTTPS協定是由SSL+HTTP協定建構的可進行加密傳輸、身份認證的網絡協定,比http協定安全。

四、SSL 的工作機制

現在我們知道Https的傳輸資料要經過一層SSL安全協定,那麼這個SSL安全協定如何確定安全呢?

首先,我們都知道Http協定是按照請求響應的方式,在用戶端與伺服器之間進行通訊的

【面試題精選】Http與Https的差別及SSL安全協定解析

SSL對這個請求過程進行了改進,我們把改進後的改成稱為 SSL握手。

SSL握手的步驟

(1)用戶端首先向伺服器發送一個連接配接請求。

(2)伺服器收到用戶端的連接配接請求後,會生成一對非對稱密鑰(即一個公鑰,一個私鑰),公鑰用來發送給用戶端對用戶端産生的對稱密鑰加密,私鑰用于接收解密獲得對稱密鑰。

(3)伺服器向用戶端發送安全證書 ① ,安全證書中包含伺服器生成的公鑰。

(4)用戶端接收到安全證書,并對安全證書進行驗證和解密,然後随機生成一個對稱密鑰。

(5)用戶端将生成的對稱密鑰通過伺服器的公鑰加密,發送給伺服器。

(6)伺服器收到加密的對稱密鑰,使用自己的私鑰對其進行解密。

(7)雙方都收到了對稱密鑰,可以對資訊進行加密,互相通信,保證安全性。

下圖能幫助你能更好的了解SSL握手:

【面試題精選】Http與Https的差別及SSL安全協定解析

注釋:

①安全證書:安全證書是由伺服器向CA(安全證書頒發機構)發送了自己的公鑰,CA通過自己的非對稱密鑰對伺服器的公鑰進行加密,并對伺服器的網址等資訊進行加密生成證書簽名,組合加密後的伺服器公鑰生成的。

額外知識點:

1、收到安全證書後,用戶端首先要做的事情就是驗證證書的真僞。各大浏覽器和作業系統已經維護了所有權威證書機構的名稱和公鑰。是以用戶端隻需要知道是哪個機構頒發的證書,就可以從本地找到對應的機構公鑰,解密出數字證書簽名。然後,用戶端通過同樣的簽名規則生成一個證書簽名,如果兩個簽名一直,說明證書是有效的。

2、谷歌浏覽器會對非Https的網頁進行懲罰,使他們的搜尋排名靠後。