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