搜尋
首頁web前端js教程什麼是HTTP與HTTPS握手

什麼是HTTP與HTTPS握手

Sep 08, 2017 pm 01:00 PM
httphttps握手

今天我總結了什麼是HTTP三次握手,還有HTTPS握手的過程以及為什麼HTTPS是安全的。

前提

在講述這兩個握手時候,有一些東西需要事先說明。

HTTP與TCP/IP區別?

TPC/IP協定是傳輸層協議,主要解決資料如何在網路中傳輸,而HTTP是應用層協議,主要解決如何包裝資料。 WEB使用HTTP協定作應用層協定,以封裝HTTP 文字訊息,然後使用TCP/IP做傳輸層協定將它傳送到網路上。

下面的圖表試圖顯示不同的TCP/IP和其他的協定在最初OSI(Open System Interconnect)模型中的位置:

##PS:表格來自網路資料

CA憑證是什麼?

CA(Certificate Authority)是負責管理和簽發憑證的第三方權威機構,是所有行業和公眾都信任的、認可的。

CA證書,就是CA頒發的證書,可用來驗證網站是否可信(針對HTTPS)、驗證某文件是否可信(是否被竄改)等,也可以用一個證書來證明另一個證書是真實可信,最頂級的證書稱為根證書。除了根證書(自己證明自己是可靠),其它證書都要依靠上一級的證書,來證明自己。

HTTP三次握手

#HTTP(HyperText Transfer Protocol)超文本傳輸協定是網路上應用最廣泛的一種網路協定。由於訊息是明文傳輸,所以被認為是不安全的。而關於HTTP的三次握手,其實就是使用三次TCP握手確認建立一個HTTP連線。

如下圖所示,SYN(synchronous)是TCP/IP建立連線時使用的握手訊號、Sequence number(序號)、Acknowledge number(確認號碼),三個箭頭指向就代表三次握手,完成三次握手,客戶端與伺服器開始傳送資料。

PS:圖片來自網路資料

第一次握手:客戶端發送syn套件(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ ACK包,此時伺服器進入SYN_RECV狀態;

第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。

HTTPS握手過程

#HTTPS在HTTP的基礎上加入了SSL協議,SSL依賴憑證來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。具體是如何進行加密,解密,驗證的,且看下圖,下面的稱為握手。

什麼是HTTP與HTTPS握手

PS:圖片以下描述摘自:http://zhuqil.cnblogs.com

1. 用戶端發起HTTPS請求

2. 服務端的設定##採用HTTPS協定的伺服器必須要有一套數位證書,可以是自己製作或CA證書。差別就是自己頒發的憑證需要客戶端驗證通過,才可以繼續訪問,而使用CA憑證不會彈出提示頁面。這套憑證其實就是一對公鑰和私鑰。公鑰給別人加密使用,私鑰給自己解密使用。

3. 傳送憑證這個憑證其實就是公鑰,只是包含了很多訊息,如憑證的頒發機構,過期時間等。

4. 客戶端解析憑證這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,例如頒發機構,過期時間等,如果發現異常,則會彈出一個警告框,提示憑證有問題。如果證書沒有問題,那麼就產生一個隨即值,然後用證書對該隨機值進行加密。

5. 傳送加密訊息這部分傳送的是用憑證加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通訊就可以透過這個隨機值來進行加密解密了。

6. 服務段解密資訊

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

7. 傳輸加密後的訊息

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

8. 客戶端解密訊息

「用戶端用之前產生的私鑰解密服務段傳過來的訊息,於是取得了解密後的內容。

PS: 整個握手過程第三方即使監聽到了數據,也束手無策。

總結

#為什麼HTTPS是安全的?

在HTTPS握手的第四步驟中,如果網站的憑證是不受信任的,會顯示出現下面確認介面,確認了網站的真實性。另外第六和八步,使用客戶端私鑰加密解密,確保了資料傳輸的安全。

HTTPS和HTTP的區別

1. https協定需要到ca申請證書或自製證書。

2. http的訊息是明文傳輸,https則是具有安全性的ssl加密。

3. http是直接與TCP進行資料傳輸,而https則是經過一層SSL(OSI表示層),用的連接埠也不一樣,前者是80(需要國內備案),後者是443 。

4. http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

注意https加密是在傳輸層 

#https訊息在包裝成tcp訊息的時候完成加密的過程,無論是https的header域也好,body域也罷都是會被加密的。

當使用tcpdump或wireshark之類的tcp層工具抓包,取得是加密的內容,而如果用應用層抓包,使用Charels(Mac)、Fildder(Windows)抓包工具,那當然看到是明文的。

PS:HTTPS本身就是為了網路的傳輸安全。

例子,使用wireshark抓包:

http,可以看到抓到是明文的:

https,可以看到抓到是密文的:

附錄

HTTPS一般使用的加密與HASH演算法如下:

非對稱加密演算法:RSA,DSA/DSS

對稱加密演算法:AES,RC4,3DES

HASH演算法:MD5,SHA1,SHA256

以上是什麼是HTTP與HTTPS握手的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

如何使用Next.js(前端集成)構建多租戶SaaS應用程序如何使用Next.js(前端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具