欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

HTTP與HTTPS握手的那些事

 更新時(shí)間:2017年05月20日 12:28:46   投稿:mdxy-dxy  
今天我總結(jié)了什么是HTTP三次握手,還有HTTPS握手的過程以及為什么HTTPS是安全的,需要的朋友可以參考下

前提

在講述這兩個(gè)握手時(shí)候,有一些東西需要提前說明。

HTTP與TCP/IP區(qū)別?

TPC/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸,而HTTP是應(yīng)用層協(xié)議,主要解決如何包裝數(shù)據(jù)。WEB使用HTTP協(xié)議作應(yīng)用層協(xié)議,以封裝HTTP 文本信息,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)到網(wǎng)絡(luò)上。

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

PS:表格來自網(wǎng)上資料

CA證書是什么?

CA(Certificate Authority)是負(fù)責(zé)管理和簽發(fā)證書的第三方權(quán)威機(jī)構(gòu),是所有行業(yè)和公眾都信任的、認(rèn)可的。

CA證書,就是CA頒發(fā)的證書,可用于驗(yàn)證網(wǎng)站是否可信(針對(duì)HTTPS)、驗(yàn)證某文件是否可信(是否被篡改)等,也可以用一個(gè)證書來證明另一個(gè)證書是真實(shí)可信,最頂級(jí)的證書稱為根證書。除了根證書(自己證明自己是可靠),其它證書都要依靠上一級(jí)的證書,來證明自己。

HTTP三次握手

HTTP(HyperText Transfer Protocol)超文本傳輸協(xié)議是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。由于信息是明文傳輸,所以被認(rèn)為是不安全的。而關(guān)于HTTP的三次握手,其實(shí)就是使用三次TCP握手確認(rèn)建立一個(gè)HTTP連接。

如下圖所示,SYN(synchronous)是TCP/IP建立連接時(shí)使用的握手信號(hào)、Sequence number(序列號(hào))、Acknowledge number(確認(rèn)號(hào)碼),三個(gè)箭頭指向就代表三次握手,完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)。

PS:圖片來自網(wǎng)上資料

第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);

第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。

HTTPS握手過程

HTTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議,SSL依靠證書來驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密。具體是如何進(jìn)行加密,解密,驗(yàn)證的,且看下圖,下面的稱為一次握手。

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

1. 客戶端發(fā)起HTTPS請(qǐng)求

2. 服務(wù)端的配置

采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書,可以是自己制作或者CA證書。區(qū)別就是自己頒發(fā)的證書需要客戶端驗(yàn)證通過,才可以繼續(xù)訪問,而使用CA證書則不會(huì)彈出提示頁面。這套證書其實(shí)就是一對(duì)公鑰和私鑰。公鑰給別人加密使用,私鑰給自己解密使用。

3. 傳送證書

這個(gè)證書其實(shí)就是公鑰,只是包含了很多信息,如證書的頒發(fā)機(jī)構(gòu),過期時(shí)間等。

4. 客戶端解析證書

這部分工作是有客戶端的TLS來完成的,首先會(huì)驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī)構(gòu),過期時(shí)間等,如果發(fā)現(xiàn)異常,則會(huì)彈出一個(gè)警告框,提示證書存在問題。如果證書沒有問題,那么就生成一個(gè)隨即值,然后用證書對(duì)該隨機(jī)值進(jìn)行加密。

5. 傳送加密信息

這部分傳送的是用證書加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值,以后客戶端和服務(wù)端的通信就可以通過這個(gè)隨機(jī)值來進(jìn)行加密解密了。

6. 服務(wù)段解密信息

服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機(jī)值(私鑰),然后把內(nèi)容通過該值進(jìn)行對(duì)稱加密。所謂對(duì)稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個(gè)私鑰,所以只要加密算法夠彪悍,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全。

7. 傳輸加密后的信息

這部分信息是服務(wù)段用私鑰加密后的信息,可以在客戶端被還原。

8. 客戶端解密信息

客戶端用之前生成的私鑰解密服務(wù)段傳過來的信息,于是獲取了解密后的內(nèi)容。

PS: 整個(gè)握手過程第三方即使監(jiān)聽到了數(shù)據(jù),也束手無策。

總結(jié)

為什么HTTPS是安全的?

在HTTPS握手的第四步中,如果站點(diǎn)的證書是不受信任的,會(huì)顯示出現(xiàn)下面確認(rèn)界面,確認(rèn)了網(wǎng)站的真實(shí)性。另外第六和八步,使用客戶端私鑰加密解密,保證了數(shù)據(jù)傳輸?shù)陌踩?/p>

HTTPS和HTTP的區(qū)別

1. https協(xié)議需要到ca申請(qǐng)證書或自制證書。

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

3. http是直接與TCP進(jìn)行數(shù)據(jù)傳輸,而https是經(jīng)過一層SSL(OSI表示層),用的端口也不一樣,前者是80(需要國內(nèi)備案),后者是443。

4. http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。

注意https加密是在傳輸層

https報(bào)文在被包裝成tcp報(bào)文的時(shí)候完成加密的過程,無論是https的header域也好,body域也罷都是會(huì)被加密的。

當(dāng)使用tcpdump或者wireshark之類的tcp層工具抓包,獲取是加密的內(nèi)容,而如果用應(yīng)用層抓包,使用Charels(Mac)、Fildder(Windows)抓包工具,那當(dāng)然看到是明文的。

PS:HTTPS本身就是為了網(wǎng)絡(luò)的傳輸安全。

例子,使用wireshark抓包:

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

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

附錄

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

非對(duì)稱加密算法:RSA,DSA/DSS

對(duì)稱加密算法:AES,RC4,3DES

HASH算法:MD5,SHA1,SHA256

相關(guān)文章

  • windows 中 \r\n 區(qū)別于 類unix中的\n 疑問理解(crlf回車換行)

    windows 中 \r\n 區(qū)別于 類unix中的\n 疑問理解(crlf回車換行)

    windows 中 \r\n 區(qū)別于 類unix中的\n 疑問 迎刃而解,需要的朋友可以參考下。
    2011-08-08
  • 推薦四款可視化工具(解決99%的可視化大屏需求)

    推薦四款可視化工具(解決99%的可視化大屏需求)

    這篇文章主要介紹了推薦四款可視化工具(解決99%的可視化大屏需求),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-04-04
  • 如何給 GitHub commit 加個(gè)綠色圖標(biāo)(教程詳解)

    如何給 GitHub commit 加個(gè)綠色圖標(biāo)(教程詳解)

    這篇文章主要介紹了如何給 GitHub commit 加個(gè)綠色圖標(biāo),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 教你使用Typora?+?阿里云OSS?+?PicGo?搭建私人圖床(最新)

    教你使用Typora?+?阿里云OSS?+?PicGo?搭建私人圖床(最新)

    這篇文章主要介紹了教你使用Typora?+?阿里云OSS?+?PicGo?搭建私人圖床,我這里使用的是阿里云對(duì)象存儲(chǔ)OSS,你可以使用騰訊、七牛云對(duì)象存儲(chǔ)等皆可,需要的朋友可以參考下
    2022-04-04
  • vs?code開發(fā)中語法正確但顯示報(bào)錯(cuò)問題分析解決

    vs?code開發(fā)中語法正確但顯示報(bào)錯(cuò)問題分析解決

    這篇文章主要為大家介紹了vs?code開發(fā)中語法正確但顯示報(bào)錯(cuò)問題分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • git設(shè)置用戶名密碼的示例代碼

    git設(shè)置用戶名密碼的示例代碼

    這篇文章主要介紹了git設(shè)置用戶名密碼的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 關(guān)于圖片存儲(chǔ)格式的整理(BMP格式介紹)

    關(guān)于圖片存儲(chǔ)格式的整理(BMP格式介紹)

    BMP文件的圖像深度可選lbit、4bit、8bit及24bit。BMP文件存儲(chǔ)數(shù)據(jù)時(shí),圖像的掃描方式是按從左到右、從下到上的順序。由于BMP文件格式是Windows環(huán)境中交換與圖有關(guān)的數(shù)據(jù)的一種標(biāo)準(zhǔn),因此在Windows環(huán)境中運(yùn)行的圖形圖像軟件都支持BMP圖像格式
    2016-01-01
  • Systemd?入門實(shí)戰(zhàn)教程

    Systemd?入門實(shí)戰(zhàn)教程

    這篇文章主要介紹了Systemd?入門實(shí)戰(zhàn)教程,介紹如何使用它完成一些基本的任務(wù),本文結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 深入理解瀏覽器的各種刷新規(guī)則

    深入理解瀏覽器的各種刷新規(guī)則

    這篇文章給大家詳細(xì)介紹了PC瀏覽器的刷新方式,以及簡單的介紹了WISE瀏覽器的刷新方式,文章介紹的很詳細(xì),有需要的朋友們可以一起來看看吧。
    2016-10-10
  • git切換到指定遠(yuǎn)程分支的方法

    git切換到指定遠(yuǎn)程分支的方法

    這篇文章主要介紹了git切換到指定遠(yuǎn)程分支的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論