您好,登錄后才能下訂單哦!
這篇文章給大家介紹HTTPS協議的原理及其與HTTP協議的區別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
https協議比http協議多了一個s,字面意思上s=secure(安全)。它跟http協議一樣都是應用層協議,都是工作在TCP協議之上。
只不過https協議在傳輸過程中的數據都是經過了加密。本質上HTTPS協議就是在TCP協議之上又加了一層SSL協議來實現了加密這個操作(不準確的說HTTPS就就是披著是SSL的皮的HTTP協議)
HTTP協議工作在80端口,HTTPS協議工作在443端口
HTTPS需要申請證書(用于驗證服務器身份)
HTTP在TCP三次握手建立連接之后即可開始傳輸數據;HTTPS協議則需要在建立TCP連接之后客戶端與服務器在進行SSL加密,確定對話密鑰,完成加密后才開始傳輸數據。
HTTPS協議傳輸是密文,HTTP協議傳輸是明文
大致的區別就以上4點,其實最主要的就是SSL協議加密對話產生對話密鑰的過程。
在了解具體的SSL協議之前,先要了解兩個加密概念
同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也被叫做共享密鑰加密。這種方法在網絡傳輸中有個問題,就是如何把密鑰安全的交付給對方,因為http協議是明文傳輸(https協議在建立ssl加密時都是明文傳輸),所以密鑰很容易被監聽截取,從而失去密鑰本身的意義了。
公開密鑰加密
假設使用者為服務端,服務端有兩個密鑰,一個是私鑰(只能自己悄悄咪咪看的,可以比喻成鑰匙),一個是公鑰(隨便哪個看的都行,可以比喻成鎖頭)。服務端將公鑰發給客戶端,客戶端使用公鑰對要發送的信息進行加密,然后發送給服務器(用鎖頭把數據鎖在箱子里),由于該信息是通過服務端的公鑰進行加密的,只有服務端使用自己的私鑰才能解析出來(用鑰匙打開鎖頭,獲取信息)。因為私鑰是一直保持在服務端,而又只有私鑰才能解析出公鑰加密的內容,所以通過該種方法實現了數據的安全傳輸。
但是由于每次都要使用私鑰去解析公鑰,才能獲取到數據,如果公鑰很長的話,其中的運算量會很大,占用CPU性能,從而使得網絡延遲加大。
HTTPS協議同時使用了這兩種方式,即先通過公開密鑰加密的方式產生一個對話密鑰,在使用對話密鑰進行對稱加密的方式傳輸數據。
SSL協議
客戶端向服務器發送請求 請求中包含
支持的SSL協議版本 客戶端生成的隨機數(第一個隨機數) 支持的加密方法 支持的壓縮方法
服務器接收到客戶端請求,并且向客戶端發送響應
響應包括
確認協議版本 服務器生產的隨機數(第二個隨機數) 確定加密的方法 服務器的證書(服務器的公鑰在里面)
客戶端接收到請求,對證書進行校驗(校驗證書的頒布機構,證書中的域名和實際域名是否一致,證書是否過期,如果不符合,瀏覽器會顯示警告),如果通過了校驗,客戶端將會發送回應
請求包括
客戶端生成一個隨機數,并且該隨機數通過服務器的公鑰進行加密(第三個隨機數) 編碼改變通知(表示之后的通信都會通過雙方商定的加密算法進行通信) 客戶端握手結束通知,表示客戶端的握手階段已經結束。這一項同時也是前面發送的所有內容的hash值,用來供服務器校驗。
服務器接收到最后的回應之后,使用服務器的私鑰來解析出客戶端發送過來的第三個隨機數,并且使用與客戶端約定好的加密算法將一共三個隨機數生成對話密鑰。服務器返回響應
編碼改變通知(表示之后的通信都會通過雙方商定的加密算法進行通信) 服務器握手結束通知,表示服務器的握手階段已經結束。這一項同時也是前面發送的所有內容的hash值,用來供客戶端校驗。
整個SSL協議的加密過程大致就是這樣,加密對話的過程都是明文傳輸的(因為HTTPS還沒帶搭建起來的嘛)。
整個加密過程的核心就是客戶端與服務器產生的三個隨機數,這三個隨機數是用于產生后續數據傳輸的加密密鑰的。從上面的過程可以看出,這三個隨機數都是可以別竊取的,但是由于第三個隨機數使用了服務器的公鑰進行了公開密鑰加密傳輸,理論上只有使用服務器的私鑰才能解析出第三個隨機數。所以最后使用這三個隨機數生成的對話私鑰是安全的,之后的數據傳輸都會使用這個對話私鑰進行加密(對稱加密),從而保證了傳輸的安全性又保證了數據傳輸的效率。
關于HTTPS協議的原理及其與HTTP協議的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。