HTTP與HTTPS的區別

2021-07-27 02:30:26 字數 1724 閱讀 8160

在 http 協議下,中間者可以隨意嗅探使用者搜尋內容,竊取隱私甚至篡改網頁。不過 https 是這些劫持行為的克星,能夠完全有效地防禦。

> - 資料完整性。防止內容被第三方冒充或者篡改。

那 https 是如何做到上述三點的呢?下面從原理角度介紹一下。

##### 2.1 內容加密

內容加密:加密演算法一般分為兩種,對稱加密和非對稱加密。所謂對稱加密(也叫金鑰加密)就是指加密和解密使用的是相同的金鑰。而非對稱加密(也叫公鑰加密)就是指加密和解密使用了不同的金鑰。

##### 2.2 身份認證

身份認證主要涉及到 pki 和數字證書。通常來講 pki(公鑰基礎設施)包含如下部分:

> - ca:證書簽發機構。

> - crl issuer:負責證書撤銷列表的發布和維護。

> - repository:負責數字證書及 crl 內容儲存和分發。

申請乙個受信任的數字證書通常有如下流程:

> - 終端實體生成公私鑰和證書請求。

> - ra 檢查實體的合法性。如果個人或者小**,這一步不是必須的。

> - ca 簽發證書,傳送給申請者。

> - 證書更新到 repository,終端後續從 repository 更新證書,查詢證書狀態等。

> - tbscertificate(to be signed certificate 待簽名證書內容),這部分包含了 10 個要素,分別是版本號,序列號,簽名演算法標識,發行者名稱,有效期,證書主體名,證書主體公鑰資訊,發行商唯一標識,主體唯一標識,擴充套件等。

> - signaturealgorithm,簽名演算法標識,指定對 tbscertificate 進行簽名的演算法。

> - signaturvalue(簽名值),使用 signaturealgorithm 對 tbscertificate 進行計算得到簽名值。

數字證書有兩個作用:

> - 身份授權。確保瀏覽器訪問的**是經過 ca 驗證的可信任的**。

> - 分發公鑰。每個數字證書都包含了註冊者生成的公鑰。在 ssl 握手時會通過 certificate 訊息傳輸給客戶端。比如前文提到的 rsa 證書公鑰加密及 ecdhe 的簽名都是使用的這個公鑰。

申請者拿到 ca 的證書並部署在**伺服器端,那瀏覽器發起握手接收到證書後,如何確認這個證書就是 ca 簽發的呢?怎樣避免第三方偽造這個證書?

答案就是數字簽名(digital signature)。數字簽名是證書的防偽標籤,目前使用最廣泛的 sha-rsa 數字簽名的製作和驗證過程如下:

> - 數字簽名的簽發。首先是使用雜湊函式對待簽名內容進行安全雜湊,生成訊息摘要,然後使用 ca 自己的私鑰對訊息摘要進行加密。

> - 數字簽名的校驗。使用 ca 的公鑰解密簽名,然後使用相同的簽名函式對待簽名證書內容進行簽名並和服務端數字簽名裡的簽名內容進行比較,如果相同就認為校驗成功。

##### 2.3 資料完整性

這部分內容比較好理解,跟平時的 md5 簽名類似,只不過安全要求要高很多。openssl 現在使用的完整性校驗演算法有兩種:md5 或者 sha。由於 md5 在實際應用中存在衝突的可能性比較大,所以盡量別採用 md5 來驗證內容一致性。sha 也不能使用 sha0 和 sha1,中國山東大學的王小雲教授在 2005 年就宣布破解了 sha-1 完整版演算法。微軟和 google 都已經宣布 16 年及 17 年之後不再支援 sha1 簽名證書。

http 與 https 的區別

https secure hypertext transfer protocol 安全超文字傳輸協議 它是乙個安全通訊通道,它基於http開發,用於在客戶計算機和伺服器之間交換資訊。它使用安全套接字層 ssl 進行資訊交換,簡單來說它是http的安全版。它是由netscape開發並內置於其瀏覽器中,...

HTTPS與HTTP的區別

最近學習網路相關的知識,看到https和http,兩個有區別,於是在網上找了相關的資料,放在自己的部落格,作為學習筆記吧。ssl介紹 ssl secure socket layer 為netscape所研發,用以保障在internet上資料傳輸之安全,利用 資料加密 encryption 技術,可確...

http與https的區別

在url前加https 字首表明是用ssl加密的。你的電腦與伺服器之間收發的資訊傳輸將更加安全。web伺服器啟用ssl需要獲得乙個伺服器證書並將該證書與要使用ssl的伺服器繫結。http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443 https協議是由ssl htt...