一、HTTP與HTTPS介紹
HTTP是超文本傳輸協(xié)議,全稱“Hyper Text Transfer Protocol”,是一個(gè)基于請(qǐng)求與響應(yīng),無狀態(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頁面的方法。
HTTPS協(xié)議是由SSL/TLS+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全
HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩涣硪环N就是確認(rèn)網(wǎng)站的真實(shí)性。
二、HTTP工作原理圖
狀態(tài)解釋:
500 Internal Server Error 服務(wù)器內(nèi)部錯(cuò)誤,無法完成請(qǐng)求
505 HTTP Version not supported 服務(wù)器不支持請(qǐng)求的HTTP協(xié)議的版本,無法完成處理
414 Request-URI Too Large 請(qǐng)求的URI過長(zhǎng)(URI通常為網(wǎng)址),服務(wù)器無法處理
400 Bad Request 客戶端請(qǐng)求的語法錯(cuò)誤,服務(wù)器無法理解
404 Not Found 服務(wù)器無法根據(jù)客戶端的請(qǐng)求找到資源(網(wǎng)頁)。通過此代碼,網(wǎng)站設(shè)計(jì)人員可設(shè)置"您所請(qǐng)求的資源無法找到"的個(gè)性頁面
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類似。但資源只是臨時(shí)被移動(dòng)??蛻舳藨?yīng)繼續(xù)使用原有URI
405 Method Not Allowed 客戶端請(qǐng)求中的方法被禁止
200 ok 請(qǐng)求成功。圖中沒顯示來。
三、HTTPS工作原理圖
四、HTTP與HTTPS區(qū)別
1. https協(xié)議需要到CA申請(qǐng)證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用。
2. http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl/tls加密傳輸協(xié)議。
3. http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4. http的連接很簡(jiǎn)單,是無狀態(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)就是安全,沒什么可說的,雖然說HTTPS有很大的優(yōu)勢(shì),但其相對(duì)來說,還是存在不足之處的:
(1)HTTPS協(xié)議握手階段比較費(fèi)時(shí),會(huì)使頁面的加載時(shí)間延長(zhǎng)近50%,增加10%到20%的耗電;
(2)HTTPS連接緩存不如HTTP高效,會(huì)增加數(shù)據(jù)開銷和功耗,甚至已有的安全措施也會(huì)因此而受到影響;
(3)SSL證書需要錢,功能越強(qiáng)大的證書費(fèi)用越高,個(gè)人網(wǎng)站、小網(wǎng)站沒有必要一般不會(huì)用。
(4)SSL證書通常需要綁定IP,不能在同一IP上綁定多個(gè)域名,IPv4資源不可能支撐這個(gè)消耗。
(5)HTTPS協(xié)議的加密范圍也比較有限,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用。最關(guān)鍵的,SSL證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。
實(shí)踐中建議保留http。所以我們?cè)谇袚Q的時(shí)候可以做http和https的兼容,具體實(shí)現(xiàn)方式是,去掉頁面鏈接中的http頭部,這樣可以自動(dòng)匹配http頭和https頭。例如:將http://www.baidu.com改為//www.baidu.com。然后當(dāng)用戶從http的入口進(jìn)入訪問頁面時(shí),頁面就是http,如果用戶是從https的入口進(jìn)入訪問頁面,頁面即使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版問世,得到大規(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í),分別為TLS 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通過互相認(rèn)證、使用數(shù)字簽名確保完整性、使用加密確保私密性,以實(shí)現(xiàn)客戶端和服務(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開發(fā)的專門用戶保護(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)上傳輸加密過的資料以達(dá)到防竊取的目的。
- 保持從端點(diǎn)A到端點(diǎn)B的傳送路途中資料的完整性。
- 透過SSL證書內(nèi)的公共金鑰加密資料傳輸至服務(wù)器端,服務(wù)器端用私密金鑰解密來證明自己的身份。
七、HTTPS優(yōu)化
我們知道Https比Http慢的原因在于tcp三次握手之后,還有TLS握手,可以通過簡(jiǎn)化這部分的握手來優(yōu)化。
TCP三次握手和TLS握手流程圖
大致圖:
詳細(xì)圖:
優(yōu)化點(diǎn)
利用session id,當(dāng)我們第一次連接之后,客戶端會(huì)生成session id,當(dāng)下一次客戶端再次和服務(wù)端連接的時(shí)候,通過攜帶的session id如果在服務(wù)端可以找到,那么就認(rèn)為客戶端是可信賴的。
利用session ticket,也在客戶端連接的時(shí)候會(huì)附帶上,當(dāng)再次連接的時(shí)候,直接解密session ticket,如果解密成功,則認(rèn)為是可信賴,直接進(jìn)行數(shù)據(jù)傳輸。
對(duì)于分布式系統(tǒng),當(dāng)在一個(gè)服務(wù)器生成的session id,把它同步到其他服務(wù)器,那么當(dāng)客戶端連接其他服務(wù)器的時(shí)候,直接可以通過這個(gè)id判斷是否可信賴。
利用tcp連接優(yōu)化,前面介紹tcp三次握手的時(shí)候,數(shù)據(jù)域沒有攜帶數(shù)據(jù)的,那么可以在tcp三次握手的時(shí)候,就攜帶數(shù)據(jù),減少握手次數(shù)。
證書驗(yàn)證優(yōu)化,TLS握手過程中,客戶端需要驗(yàn)證證書的有效性,這一部分可以直接通過服務(wù)器驗(yàn)證,將結(jié)果緩存,將驗(yàn)證結(jié)果返回給客戶端,客戶端在本地校驗(yàn)結(jié)果是否真實(shí)。
原文鏈接: https://blog.csdn.net/qq_35745940/article/details/118423532