HTTPS(身披SSL协议的HTTP)
HTTP 與 HTTPS 的區(qū)別
HTTPS科普掃盲帖
HTTPS小結(jié)
HTTP 和 HTTPS 區(qū)別
-
HTTP是明文傳輸未加密,安全性差,HTTPS(HTTP + SSL)數(shù)據(jù)傳輸是加密的,安全性較好
-
HTTPS協(xié)議需要到CS申請——收費(fèi)
-
HTTP頁面響應(yīng)速度比HTTPS快,主要是因為 HTTP 使用 TCP 三次握手建立連接,客戶端和服務(wù)器需要交換 3 個包,而 HTTPS除了 TCP 的三個包,還要加上 ssl 握手需要的 9 個包,所以一共是 12 個包。
-
默認(rèn)端口不同
-
HTTPS 其實就是建構(gòu)在 SSL/TLS 之上的 HTTP 協(xié)議,所以,要比較 HTTPS 比 HTTP 要更耗費(fèi)服務(wù)器資源。
HTTPS = HTTP + 加密 + 認(rèn)證 + 完整性保護(hù)
HTTPS 經(jīng)由 HTTP 進(jìn)行通信,但是利用SSL/TLS來進(jìn)行加密數(shù)據(jù)包。
SSL 提供 加密處理 和 認(rèn)證 以及 摘要功能
HTTPS開發(fā)的主要目的,是提供對網(wǎng)站服務(wù)器的身份認(rèn)證,保護(hù)交換數(shù)據(jù)的隱私與完整性。
一般,HTTP是與TCP直接通信,現(xiàn)在使用SSL,HTTP先與SSL通信,SSL和TCP通信。
通俗的講,TLS、SSL其實是類似的東西,SSL是個加密套件,負(fù)責(zé)對HTTP的數(shù)據(jù)進(jìn)行加密。TLS是SSL的升級版。現(xiàn)在提到HTTPS,加密套件基本指的是TLS。
SSL 是獨(dú)立于 HTTP 的協(xié)議, 所以不光是 HTTP 協(xié)議, 其他運(yùn)行在應(yīng)用層的 SMTP和 Telnet 等協(xié)議均可配合 SSL 協(xié)議使用。
傳輸流程:原先是應(yīng)用層將數(shù)據(jù)直接給到TCP進(jìn)行傳輸,現(xiàn)在改成應(yīng)用層將數(shù)據(jù)給到TLS/SSL,將數(shù)據(jù)加密后,再給到TCP進(jìn)行傳輸。如圖:
HTTPS 默認(rèn)工作在 TCP 協(xié)議443端口,它的工作流程一般如以下方式:
服務(wù)端的配置 ,客戶端驗證服務(wù)器數(shù)字證書(這套證書其實就是一對公鑰和私鑰 )
傳送證書,這個證書就是公鑰,其中包含了證書的頒布機(jī)構(gòu),過期時間等
客戶端解析證書,這個部分的工作是客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發(fā)機(jī)構(gòu),過期時間等,如果發(fā)現(xiàn)異常,則會彈出一個警告框,提示證書存在問題。
如果證書沒有問題,那么就生成一個隨機(jī)值,然后用證書對改隨機(jī)值進(jìn)行加密
傳送加密信息,此時傳送的是用證書加密后的隨機(jī)值,目的就是讓服務(wù)器得到這個隨機(jī)值,以后客戶端和服務(wù)器端的通信就可以通過這個隨機(jī)值來進(jìn)行加密解密了。
服務(wù)器端解密信息,服務(wù)器端用私鑰解密后,得到客戶端傳過來的隨機(jī)值(私鑰),然后把內(nèi)容通過該值進(jìn)行對稱加密,所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這要除非知道私鑰,不然無法獲取內(nèi)容,而客戶端和服務(wù)器端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠復(fù)雜,數(shù)據(jù)就足夠安全。
傳輸加密后的信息,這部分信息是服務(wù)器端用私鑰加密后的信息,可以在客戶端還原。
客戶端解密信息,客戶端用之前生成的私鑰解密服務(wù)端傳過來的信息,于是獲取了解密后的內(nèi)容,整個過程第三方即使監(jiān)聽到了數(shù)據(jù),也束手無策。
?
加密分為:對稱加密和非對稱加密
對稱加密
流程:客戶端和服務(wù)器端進(jìn)行一次私密對話:
1.每次對話時,服務(wù)器端都要給客戶端一個秘鑰
2.客戶端把數(shù)據(jù)加密以后,發(fā)送給服務(wù)器端
3.服務(wù)器端使用秘鑰解密接收到的數(shù)據(jù)
優(yōu)點:效率高
缺點:不夠安全,萬一黑客把秘鑰和密文截取了,他就可以解密這段數(shù)據(jù)了
非對稱加密
流程:客戶端和服務(wù)器端進(jìn)行一次私密對話:
1.服務(wù)器端要給客戶端一個公鑰(全世界都知道),服務(wù)器端保留這個服務(wù)器對應(yīng)的的私鑰
2.客戶端用公鑰把數(shù)據(jù)加密以后,發(fā)送給服務(wù)器端
3.服務(wù)器端使用對應(yīng)的的私鑰解密接收到的數(shù)據(jù)
優(yōu)點:效率低
缺點:不夠安全,萬一黑客把密文截取了(公鑰早就知道了),他就可以解密這段數(shù)據(jù)了
?
?
另一種解釋(一人一種理解? -.-'):
HTTPS在傳輸數(shù)據(jù)之前需要客戶端(瀏覽器)與服務(wù)端(網(wǎng)站)之間進(jìn)行一次握手,在握手過程中將確立雙方加密傳輸數(shù)據(jù)的密碼信息。TLS/SSL協(xié)議不僅僅是一套加密傳輸?shù)膮f(xié)議,更是一件經(jīng)過藝術(shù)家精心設(shè)計的藝術(shù)品,TLS/SSL中使用了非對稱加密,對稱加密以及HASH算法。握手過程的簡單描述如下:
1.瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站。
2.網(wǎng)站從中選出一組加密算法與HASH算法,并將自己的身份信息以證書的形式發(fā)回給瀏覽器。證書里面包含了網(wǎng)站地址,加密公鑰,以及證書的頒發(fā)機(jī)構(gòu)等信息。
3.獲得網(wǎng)站證書之后瀏覽器要做以下工作:
a) 驗證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法,證書中包含的網(wǎng)站地址是否與正在訪問的地址一致等),如果證書受信任,則瀏覽器欄里面會顯示一個小鎖頭,否則會給出證書不受信的提示。
b) 如果證書受信任,或者是用戶接受了不受信的證書,瀏覽器會生成一串隨機(jī)數(shù)的密碼,并用證書中提供的公鑰加密。
c) 使用約定好的HASH計算握手消息,并使用生成的隨機(jī)數(shù)對消息進(jìn)行加密,最后將之前生成的所有信息發(fā)送給網(wǎng)站。
4.網(wǎng)站接收瀏覽器發(fā)來的數(shù)據(jù)之后要做以下的操作:
a) 使用自己的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發(fā)來的握手消息,并驗證HASH是否與瀏覽器發(fā)來的一致。
b) 使用密碼加密一段握手消息,發(fā)送給瀏覽器。
5.瀏覽器解密并計算握手消息的HASH,如果與服務(wù)端發(fā)來的HASH一致,此時握手過程結(jié)束,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對稱加密算法進(jìn)行加密。
這里瀏覽器與網(wǎng)站互相發(fā)送加密的握手消息并驗證,目的是為了保證雙方都獲得了一致的密碼,并且可以正常的加密解密數(shù)據(jù),為后續(xù)真正數(shù)據(jù)的傳輸做一次測試。另外,HTTPS一般使用的加密與HASH算法如下:
非對稱加密算法:RSA,DSA/DSS
對稱加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
其中非對稱加密算法用于在握手過程中加密生成的密碼,對稱加密算法用于對真正傳輸?shù)臄?shù)據(jù)進(jìn)行加密,而HASH算法用于驗證數(shù)據(jù)的完整性。由于瀏覽器生成的密碼是整個數(shù)據(jù)加密的關(guān)鍵,因此在傳輸?shù)臅r候使用了非對稱加密算法對其加密。非對稱加密算法會生成公鑰和私鑰,公鑰只能用于加密數(shù)據(jù),因此可以隨意傳輸,而網(wǎng)站的私鑰用于對數(shù)據(jù)進(jìn)行解密,所以網(wǎng)站都會非常小心的保管自己的私鑰,防止泄漏。
在以上流程中, 應(yīng)用層發(fā)送數(shù)據(jù)時會附加一種叫做 MAC( Message Authentication Code) 的報文摘要。 MAC 能夠查知報文是否遭到篡改, 從而保護(hù)報文的完整性。
轉(zhuǎn)載于:https://www.cnblogs.com/houfee/p/9816994.html
總結(jié)
以上是生活随笔為你收集整理的HTTPS(身披SSL协议的HTTP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 列了一些自己会但是不怎么精通的编程语言和
- 下一篇: 【agc019F】Yes or No