Http/Https 協(xié)議

什么是HTTP?
超文本傳輸協(xié)議,是一個基于請求與響應,無狀態(tài)的,應用層的協(xié)議,常基于TCP/IP協(xié)議傳輸數(shù)據(jù),互聯(lián)網(wǎng)上應用最為廣泛的一種網(wǎng)絡協(xié)議,所有的WWW文件都必須遵守這個標準。設計Http的初衷是為了提供一種發(fā)布和接收HTML頁面的方法。

什么是HTTPS?
Https是一種通過計算機網(wǎng)絡進行安全通信的傳輸協(xié)議,經(jīng)由Http進行通信,利用SSL/TLS建立全信道,加密數(shù)據(jù)包。Https使用的主要目的是提供對網(wǎng)站服務器的身份認證,同時保護交換數(shù)據(jù)的隱私與完整性。
TLS(Transport Layer Security,傳輸層安全)是傳輸層加密協(xié)議,前身是SSL(Secure Socket Layer,安全套接字層)協(xié)議,由網(wǎng)景公司1995年發(fā)布,有時候兩者不區(qū)分。

Http/Https都是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協(xié)議。

Http                 Https
--------------------------
HTTP                 HTTP
TCP                  SSL/TLS
IP                   TCP
                     IP

傳統(tǒng)的Http協(xié)議是一種應用層的傳輸協(xié)議,Http直接與TCP協(xié)議通信。其本身存在一些缺點:

  • Http協(xié)議使用明文傳輸,容易遭到竊聽。
  • Http對于通信雙方都沒有進行身份驗證,通信的雙方無法確認對方是否是偽裝的客戶端或者服務端。
  • Http對于傳輸內(nèi)容的完整性沒有確認的辦法,往往容易在傳輸過程中被劫持篡改。

Https = Http + 加密 + 認證 + 完整性保護。

Https的加密

近代密碼學中加密的方式主要有兩類:

  • 對稱秘鑰加密

對稱秘鑰加密是指加密與解密過程使用同一把秘鑰。這種方式的優(yōu)點是處理速度快,但是如何安全的從一方將秘鑰傳遞到通信的另一方是一個問題。(DES、AES-GCM、ChaCha20-Poly1305等)

  • 非對稱秘鑰加密

非對稱秘鑰加密是指加密與解密使用兩把不同的秘鑰。這兩把秘鑰,一把叫公開秘鑰,可以隨意對外公開。一把叫私有秘鑰,只用于本身持有。得到公開秘鑰的客戶端可以使用公開秘鑰對傳輸內(nèi)容進行加密,而只有私有秘鑰持有者本身可以對公開秘鑰加密的內(nèi)容進行解密。這種方式克服了秘鑰交換的問題,但是相對于對稱秘鑰加密的方式,處理速度較慢。(RSA、DSA、ECDSA、 DH、ECDHE等)

SSL\TLS的加密方式則是結(jié)合了兩種加密方式的優(yōu)點。首先采用非對稱秘鑰加密,將一個對稱秘鑰使用公開秘鑰加密后傳輸?shù)綄Ψ?。對方使用私有秘鑰解密,得到傳輸?shù)膶ΨQ秘鑰。之后雙方再使用對稱秘鑰進行通信。這樣即解決了對稱秘鑰加密的秘鑰傳輸問題,又利用了對稱秘鑰的高效率來進行通信內(nèi)容的加密與解密。

Https的認證

SSL\TLS采用的混合加密的方式還是存在一個問題,即怎么樣確保用于加密的公開秘鑰確實是所期望的服務器所分發(fā)的呢?也許在收到公開秘鑰時,這個公開秘鑰已經(jīng)被別人篡改了。因此,我們還需要對這個秘鑰進行認證的能力,以確保我們通信的對方是我們所期望的對象。
目前的做法是使用由數(shù)字證書認證機構(gòu)頒發(fā)的公開秘鑰證書。服務器的運營人員可以向認證機構(gòu)提出公開秘鑰申請。認證機構(gòu)在審核之后,會將公開秘鑰與共鑰證書綁定。服務器就可以將這個共鑰證書下發(fā)給客戶端,客戶端在收到證書后,使用認證機構(gòu)的公開秘鑰進行驗證。一旦驗證成功,即可知道這個秘鑰是可以信任的秘鑰。

Http通信過程
  • 1、建立tcp連接:

在Http工作開始之前,Web瀏覽器首先要通過網(wǎng)絡與Web服務器建立連接,該連接是通過TCP來完成的,該協(xié)議與IP協(xié)議共同構(gòu)建Internet,即著名的TCP/IP協(xié)議族,因此Internet又被稱作是TCP/IP網(wǎng)絡。HTTP是比TCP更高層次的應用層協(xié)議,根據(jù)規(guī)則,只有低層協(xié)議建立之后才能進行更深層協(xié)議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號是80。

  • 2、Web瀏覽器向Web服務器發(fā)送請求命令

一旦建立了TCP連接,Web瀏覽器就會向Web服務器發(fā)送請求命令。

  • 3、Web瀏覽器發(fā)送請求頭信息

瀏覽器發(fā)送其請求命令之后,還要以頭信息的形式向Web服務器發(fā)送一些別的信息,之后瀏覽器發(fā)送了一空白行來通知服務器,它已經(jīng)結(jié)束了該頭信息的發(fā)送。

  • 4、Web服務器應答

客戶機向服務器發(fā)出請求后,服務器會客戶機回送應答,HTTP/1.1 200 OK,應答的第一部分是協(xié)議的版本號和應答狀態(tài)碼。

  • 5、Web服務器發(fā)送應答頭信息

正如客戶端會隨同請求發(fā)送關(guān)于自身的信息一樣,服務器也會隨同應答向用戶發(fā)送關(guān)于它自己的數(shù)據(jù)及被請求的文檔。

  • 6、Web服務器向瀏覽器發(fā)送數(shù)據(jù)

Web服務器向瀏覽器發(fā)送頭信息后,它會發(fā)送一個空白行來表示頭信息的發(fā)送到此為結(jié)束,接著,它就以Content-Type應答頭信息所描述的格式發(fā)送用戶所請求的實際數(shù)據(jù)。

  • 7、Web服務器關(guān)閉TCP連接

一般情況下,一旦Web服務器向瀏覽器發(fā)送了請求數(shù)據(jù),它就要關(guān)閉TCP連接,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼:
Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開狀態(tài),于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求。保持連接節(jié)省了為每個請求建立新連接所需的時間,還節(jié)約了網(wǎng)絡帶寬。

Https通信過程

1: 客戶端通過發(fā)送 Client Hello 報文開始 SSL 通信。報文中包含客戶端支持的 SSL 的指定版本、加密組件(Cipher Suite)列表(所使用的加密算法及密鑰長度等)。
2、服務器可進行 SSL 通信時,會以 Server Hello 報文作為應答。和客戶端一樣,在報文中包含 SSL 版本以及加密組件。服務器的加密組件內(nèi)容是從接收到的客戶端加密組件內(nèi)篩選出來的。
3、之后服務器發(fā)送 Certificate 報文。報文中包含公開密鑰證書。
4、最后服務器發(fā)送 Server Hello Done 報文通知客戶端,最初階段的 SSL 握手協(xié)商部分結(jié)束。
5、SSL 第一次握手結(jié)束之后,客戶端以 Client Key Exchange 報文作為回應。報文中包含通信加密中使用的一種被稱為 Pre-mastersecret 的隨機密碼串。該報文已用步驟 3 中的公開密鑰進行加密。
6、接著客戶端繼續(xù)發(fā)送 Change Cipher Spec 報文。該報文會提示服務器,在此報文之后的通信會采用 Pre-master secret 密鑰加密。
7、客戶端發(fā)送 Finished 報文。該報文包含連接至今全部報文的整體校驗值。這次握手協(xié)商是否能夠成功,要以服務器是否能夠正確解密該報文作為判定標準。
8、服務器同樣發(fā)送 Change Cipher Spec 報文。
9、服務器同樣發(fā)送 Finished 報文。
10、服務器和客戶端的 Finished 報文交換完畢之后,SSL 連接就算建立完成。當然通信會受到 SSL 的保護。從此處開始進行應用層協(xié)議的通信,即發(fā)送 HTTP 請求。
11、應用層協(xié)議通信,即發(fā)送 HTTP 響應。
12、 最后由客戶端斷開連接。斷開連接時,發(fā)送 close_notify 報文。這之后再發(fā)送 TCP FIN 報文來關(guān)閉與 TCP的通信。

Https 對訪問速度的影響

Https 對訪問速度的影響主要來源為兩方面:
1、協(xié)議交互所增加的網(wǎng)絡 RTT(round trip time)。
2、加解密相關(guān)的計算耗時。

具體Https訪問速度優(yōu)化相關(guān)沒有實際操作過,待有實操經(jīng)驗再來分享。

參考文獻

HTTP與HTTPS對訪問速度(性能)的影響
優(yōu)化 Tengine HTTPS 握手時間
HTTPS 高性能傳輸優(yōu)化詳解
HTTP 必知必會的那些
HTTP協(xié)議通信過程
HTTPS通信過程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容