1.什么是 HTTPS俐巴?
這個圖片經(jīng)常見吧~
沒錯遵班,他就是HTTPS(Hypertext Transfer Protocol over Secure Socket Layer勃痴,即HTTP over SSL)盔憨。
簡單來說HTTPS就是安全的HTTP。它將HTTP協(xié)議中的明文傳輸內(nèi)容進行加密缨称,確保信息傳輸?shù)陌踩浴?/p>
HTTPS中的S是指位于HTTP協(xié)議與TCP/IP協(xié)議中間的SSL/TLS協(xié)議凝果。
簡單介紹下SSL/TLS協(xié)議
SSL協(xié)議:是一種記錄協(xié)議,擴展性良好睦尽,可以很方便的添加子協(xié)議器净,而握手協(xié)議便是SSL協(xié)議的一個子協(xié)議。
TLS協(xié)議:是SSL協(xié)議的后續(xù)版本当凡。
2.HTTPS和HTTP的區(qū)別
(1)http是超文本傳輸協(xié)議山害,信息是明文傳輸;https 則是具有安全性的ssl加密傳輸協(xié)議宁玫。
(2)http和https使用的是完全不同的連接方式粗恢,用的端口也不一樣,前者是80欧瘪,后者是443。
(3)http的連接很簡單匙赞,是無狀態(tài)的佛掖;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸妖碉、身份認證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全芥被。
(4)https協(xié)議需要到CA申請證書欧宜。
3.什么是信息傳輸安全?
一個安全的網(wǎng)絡(luò)通信環(huán)境要求有三個方面:
通信內(nèi)容一定要保密
通信雙方身份要確保真實
通信內(nèi)容要完整
4.通信內(nèi)容如何保密拴魄?
我們所用的互聯(lián)網(wǎng)環(huán)境近似透明冗茸,而通信又需要經(jīng)過很多中轉(zhuǎn)才能到接收方手中。通信內(nèi)容的保密性就顯得非常重要了匹中。
所以通信內(nèi)容要保密就要用到加密算法了夏漱。舉個簡單例子來看什么是加密:定義一個函數(shù)f(x)=x+b,x是輸入的明文顶捷,b是密鑰挂绰;解密函數(shù)就是加密函數(shù)的反函數(shù)g(x)=x-b。因為b的值是未知的服赎,所以第三方即便看見了密文也不知道文件真實內(nèi)容葵蒂,這樣就實現(xiàn)了加密。這種加解密都用同一個密鑰重虑,叫對稱加密践付。
既然有對稱加密算法就會有非對稱加密算法,非對稱加密算法需要兩個密鑰來加密和解密---公開密鑰(public key缺厉,公鑰)永高、私有密鑰(private key,私鑰)芽死。公鑰是所有人都能獲取到的鑰匙乏梁,私鑰則是服務(wù)器私自保存的鑰匙。非對稱加密算法中公鑰加密的內(nèi)容只能用私鑰解密关贵,私鑰加密的算法只能用公鑰解密遇骑。
https的加密就是通信雙方利用非對稱加密算法加密出一個對稱密鑰給對方,讓其用自己的私鑰讀取對稱密鑰揖曾,然后通信雙方就用這個對稱密鑰來做對稱加密落萎。
5.如何確保通信雙方身份的真實性
直白的說,A與B通信中炭剪,A怎么確認B的身份不是由C偽造的练链。只需要校驗由CA簽發(fā)的數(shù)字證書就可確定B的身份。再介紹兩個名詞
數(shù)字證書:是互聯(lián)網(wǎng)通信中標識雙方身份信息的數(shù)字文件奴拦,由CA簽發(fā)媒鼓。
CA:(certification authority)是數(shù)字證書的簽發(fā)機構(gòu)。作為權(quán)威機構(gòu),其審核申請者身份后簽發(fā)數(shù)字證書绿鸣,這樣我們只需要校驗數(shù)字證書即可確定對方的真實身份疚沐。
6.通信內(nèi)容的完整性
這一點主要是為了防止通信內(nèi)容被第三方任意篡改,最常見的一個例子就是訪問某些網(wǎng)站時經(jīng)常跳出來的廣告潮模。
確保通信內(nèi)容的完整性比較簡單:先用哈希算法提取內(nèi)容摘要亮蛔,然后對摘要進行加密生成數(shù)字簽名,驗證數(shù)字簽名就可以判斷出通信內(nèi)容的完整性了擎厢。
7.HTTPS流程圖
8.HTTPS通信大體步驟:
(1)客戶端發(fā)送Client Hello報文開始SSL通信究流,報文中包含SSL版本、可用算法列表动遭、密鑰長度等芬探。
(2)服務(wù)器支持SSL通信時,會以Server Hello報文作為應(yīng)答沽损,報文中同樣包括SSL版本以及加密算法配置灯节,也就是協(xié)商加解密算法。
(3)然后服務(wù)器會發(fā)送Certificate報文绵估,也就是將證書發(fā)送給客戶端炎疆。
(4)客戶端發(fā)送Client Key Exchange報文,使用3中的證書公鑰加密Pre-master secret隨機密碼串国裳,后續(xù)就以這個密碼來做對稱加密進行通信形入。
(5)服務(wù)器使用私鑰解密成功后返回一個響應(yīng)提示SSL通信環(huán)境已經(jīng)搭建好了。
(6)然后就是常規(guī)的http c/s通信缝左。
9.HTTPS通信的劣勢
(1)對數(shù)據(jù)進行加解密決定了它比http慢
https需要進行非對稱的加解密亿遂,且需要三次握手。首次連接比較慢點渺杉,當然現(xiàn)在也有很多的優(yōu)化蛇数。
(2)出于安全考慮,瀏覽器不會在本地保存HTTPS緩存是越。實際上耳舅,只要在HTTP頭中使用特定命令,HTTPS是可以緩存的倚评。Firefox默認只在內(nèi)存中緩存HTTPS浦徊。但是,只要頭命令中有Cache-Control: Public天梧,緩存就會被寫到硬盤上盔性。 IE只要http頭允許就可以緩存https內(nèi)容,緩存策略與是否使用HTTPS協(xié)議無關(guān)呢岗。
總的來說HTTPS通信中最重要的環(huán)節(jié)就是加密過程冕香。
理解的不太透徹蛹尝,不足之處歡迎補充。部分圖片和內(nèi)容來自于網(wǎng)絡(luò)暂筝,侵刪箩言。