一、HTTP與HTTPS介紹
HTTP是超文本傳輸協(xié)議,全稱(chēng)“Hyper Text Transfer Protocol”,是一個(gè)基于請(qǐng)求與響應(yīng),無(wú)狀態(tài)的,應(yīng)用層的協(xié)議,常基于TCP/IP協(xié)議傳輸數(shù)據(jù),互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP的初衷是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。
HTTPS協(xié)議是由SSL/TLS+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全
HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道,來(lái)保證數(shù)據(jù)傳輸?shù)陌踩?;另一種就是確認(rèn)網(wǎng)站的真實(shí)性。
二、HTTP工作原理圖
狀態(tài)解釋?zhuān)?/span>
500 Internal Server Error 服務(wù)器內(nèi)部錯(cuò)誤,無(wú)法完成請(qǐng)求
505 HTTP Version not supported 服務(wù)器不支持請(qǐng)求的HTTP協(xié)議的版本,無(wú)法完成處理
414 Request-URI Too Large 請(qǐng)求的URI過(guò)長(zhǎng)(URI通常為網(wǎng)址),服務(wù)器無(wú)法處理
400 Bad Request 客戶(hù)端請(qǐng)求的語(yǔ)法錯(cuò)誤,服務(wù)器無(wú)法理解
404 Not Found 服務(wù)器無(wú)法根據(jù)客戶(hù)端的請(qǐng)求找到資源(網(wǎng)頁(yè))。通過(guò)此代碼,網(wǎng)站設(shè)計(jì)人員可設(shè)置"您所請(qǐng)求的資源無(wú)法找到"的個(gè)性頁(yè)面
301 Moved Permanently 永久移動(dòng)。請(qǐng)求的資源已被永久的移動(dòng)到新URI,返回信息會(huì)包括新的URI,瀏覽器會(huì)自動(dòng)定向到新URI。今后任何新的請(qǐng)求都應(yīng)使用新的URI代替
302 Found 臨時(shí)移動(dòng)。與301類(lèi)似。但資源只是臨時(shí)被移動(dòng)??蛻?hù)端應(yīng)繼續(xù)使用原有URI
405 Method Not Allowed 客戶(hù)端請(qǐng)求中的方法被禁止
200 ok 請(qǐng)求成功。圖中沒(méi)顯示來(lái)。
三、HTTPS工作原理圖
四、HTTP與HTTPS區(qū)別
1. https協(xié)議需要到CA申請(qǐng)證書(shū),一般免費(fèi)證書(shū)較少,因而需要一定費(fèi)用。
2. http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl/tls加密傳輸協(xié)議。
3. http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4. http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL/TLS+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
五、HTTPS的缺點(diǎn)
HTTPS的優(yōu)點(diǎn)就是安全,沒(méi)什么可說(shuō)的,雖然說(shuō)HTTPS有很大的優(yōu)勢(shì),但其相對(duì)來(lái)說(shuō),還是存在不足之處的:
(1)HTTPS協(xié)議握手階段比較費(fèi)時(shí),會(huì)使頁(yè)面的加載時(shí)間延長(zhǎng)近50%,增加10%到20%的耗電;
(2)HTTPS連接緩存不如HTTP高效,會(huì)增加數(shù)據(jù)開(kāi)銷(xiāo)和功耗,甚至已有的安全措施也會(huì)因此而受到影響;
(3)SSL證書(shū)需要錢(qián),功能越強(qiáng)大的證書(shū)費(fèi)用越高,個(gè)人網(wǎng)站、小網(wǎng)站沒(méi)有必要一般不會(huì)用。
(4)SSL證書(shū)通常需要綁定IP,不能在同一IP上綁定多個(gè)域名,IPv4資源不可能支撐這個(gè)消耗。
(5)HTTPS協(xié)議的加密范圍也比較有限,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用。最關(guān)鍵的,SSL證書(shū)的信用鏈體系并不安全,特別是在某些國(guó)家可以控制CA根證書(shū)的情況下,中間人攻擊一樣可行。
實(shí)踐中建議保留http。所以我們?cè)谇袚Q的時(shí)候可以做http和https的兼容,具體實(shí)現(xiàn)方式是,去掉頁(yè)面鏈接中的http頭部,這樣可以自動(dòng)匹配http頭和https頭。例如:將http://www.baidu.com改為//www.baidu.com。然后當(dāng)用戶(hù)從http的入口進(jìn)入訪問(wèn)頁(yè)面時(shí),頁(yè)面就是http,如果用戶(hù)是從https的入口進(jìn)入訪問(wèn)頁(yè)面,頁(yè)面即使https的。
六、SSL與TLS
歷史
1994年,NetScape公司設(shè)計(jì)了SSL協(xié)議(Secure Sockets Layer)的1.0版,但是未發(fā)布。
1995年,NetScape公司發(fā)布SSL 2.0版,很快發(fā)現(xiàn)有嚴(yán)重漏洞。
1996年,SSL 3.0版問(wèn)世,得到大規(guī)模應(yīng)用。
1999年,互聯(lián)網(wǎng)標(biāo)準(zhǔn)化組織ISOC接替NetScape公司,發(fā)布了SSL的升級(jí)版TLS 1.0版。
2006年和2008年,TLS進(jìn)行了兩次升級(jí),分別為T(mén)LS 1.1版和TLS 1.2版。最新的變動(dòng)是2011年TLS 1.2的修訂版,在2018年也發(fā)布了TLS1.3版本。
TLS 1.0通常被標(biāo)示為SSL 3.1,TLS 1.1為SSL 3.2,TLS 1.2為SSL 3.3。
介紹
SSL:(Secure Socket Layer,安全套接字層),位于可靠的面向連接的網(wǎng)絡(luò)層協(xié)議和應(yīng)用層協(xié)議之間的一種協(xié)議層。SSL通過(guò)互相認(rèn)證、使用數(shù)字簽名確保完整性、使用加密確保私密性,以實(shí)現(xiàn)客戶(hù)端和服務(wù)器之間的安全通訊。該協(xié)議由兩層組成:SSL記錄協(xié)議和SSL握手協(xié)議。
TLS:(Transport Layer Security,傳輸層安全協(xié)議),用于兩個(gè)應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性。該協(xié)議由兩層組成:TLS記錄協(xié)議和TLS握手協(xié)議。
目前應(yīng)用的最廣泛的 TLS 是 1.2,而之前的協(xié)議(TLS1.1/1.0、SSLv3/v2)都已經(jīng)被認(rèn)為是不安全的了。
SSL與TLS的關(guān)系
TLS是SSL 3.0的后續(xù)版本。在TLS與SSL3.0之間存在著顯著的差別,主要是它們所支持的加密算法不同,所以TLS與SSL3.0不能互操作。
SSL是Netscape開(kāi)發(fā)的專(zhuān)門(mén)用戶(hù)保護(hù)Web通訊的,目前版本為3.0。最新版本的TLS(Transport Layer Security,傳輸層安全協(xié)議)是IETF(Internet Engineering Task Force,Internet工程任務(wù)組)制定的一種新的協(xié)議。最新版本的TLS 1.0,它建立在SSL 3.0協(xié)議規(guī)范之上,是SSL 3.0的后續(xù)版本。兩者差別極小,可以理解為SSL 3.1。
SSL與TLS的功能:
- 在互聯(lián)網(wǎng)上傳輸加密過(guò)的資料以達(dá)到防竊取的目的。
- 保持從端點(diǎn)A到端點(diǎn)B的傳送路途中資料的完整性。
- 透過(guò)SSL證書(shū)內(nèi)的公共金鑰加密資料傳輸至服務(wù)器端,服務(wù)器端用私密金鑰解密來(lái)證明自己的身份。
七、HTTPS優(yōu)化
我們知道Https比Http慢的原因在于tcp三次握手之后,還有TLS握手,可以通過(guò)簡(jiǎn)化這部分的握手來(lái)優(yōu)化。
TCP三次握手和TLS握手流程圖
大致圖:
詳細(xì)圖:
優(yōu)化點(diǎn)
利用session id,當(dāng)我們第一次連接之后,客戶(hù)端會(huì)生成session id,當(dāng)下一次客戶(hù)端再次和服務(wù)端連接的時(shí)候,通過(guò)攜帶的session id如果在服務(wù)端可以找到,那么就認(rèn)為客戶(hù)端是可信賴(lài)的。
利用session ticket,也在客戶(hù)端連接的時(shí)候會(huì)附帶上,當(dāng)再次連接的時(shí)候,直接解密session ticket,如果解密成功,則認(rèn)為是可信賴(lài),直接進(jìn)行數(shù)據(jù)傳輸。
對(duì)于分布式系統(tǒng),當(dāng)在一個(gè)服務(wù)器生成的session id,把它同步到其他服務(wù)器,那么當(dāng)客戶(hù)端連接其他服務(wù)器的時(shí)候,直接可以通過(guò)這個(gè)id判斷是否可信賴(lài)。
利用tcp連接優(yōu)化,前面介紹tcp三次握手的時(shí)候,數(shù)據(jù)域沒(méi)有攜帶數(shù)據(jù)的,那么可以在tcp三次握手的時(shí)候,就攜帶數(shù)據(jù),減少握手次數(shù)。
證書(shū)驗(yàn)證優(yōu)化,TLS握手過(guò)程中,客戶(hù)端需要驗(yàn)證證書(shū)的有效性,這一部分可以直接通過(guò)服務(wù)器驗(yàn)證,將結(jié)果緩存,將驗(yàn)證結(jié)果返回給客戶(hù)端,客戶(hù)端在本地校驗(yàn)結(jié)果是否真實(shí)。
原文鏈接: https://blog.csdn.net/qq_35745940/article/details/118423532