天天看點

HTTP狀态碼、HTTP和HTTPSHTTP狀态碼HTTP和HTTPS加密技術

文章目錄

  • HTTP狀态碼
    • 簡介
    • 2XX 成功
    • 3XX 重定向
    • 4XX用戶端錯誤
    • 5XX伺服器錯誤
  • HTTP和HTTPS
    • HTTP的缺點
      • 通信使用明文可能會被竊聽
      • 不驗證通信方的身份就可能遭遇僞裝
      • 無法證明封包完整性,可能已遭篡改
    • HTTP+加密+認證+完整性保護=HTTPS
      • HTTPS是身披SSL外殼的HTTP
  • 加密技術
    • 共享密鑰加密
    • 使用兩把密鑰的公開密鑰加密
    • HTTPS采用混合加密機制

HTTP狀态碼

簡介

HTTP狀态碼負責表示用戶端HTTP請求的傳回結果、标記伺服器端得到處理是否正常、通知出現的錯誤等工作。狀态碼的職責是當用戶端向伺服器發送請求時,描述傳回的請求結果。

狀态碼的類别:

HTTP狀态碼、HTTP和HTTPSHTTP狀态碼HTTP和HTTPS加密技術

HTTP狀态碼的種類數量繁多,實際上經常使用的大概隻有14種。下面,我們來了解一下。

2XX 成功

2XX的響應結果表明請求被正常處理了。

  • 200 OK:表示從用戶端發來的請求在伺服器端被正常處理了。
  • 204 Contene:該狀态碼代表伺服器接受的請求已成功處理,但在傳回的的響應封包種不含屍體的主體部分。另外,也不允許傳回任何實體的主體。
  • 206 Partial Contene:該狀态碼表示用戶端進行了範圍請求,而伺服器成功執行了這部分的GET請求。

3XX 重定向

3XX響應結果表明浏覽器需要執行某些特殊的處理以正确處理請求。

  • 301 Moved Permanently:永久重定向。該狀态碼表示請求的資源已被配置設定了新的URI,以後應使用資源在所指的URI。
  • 302 Found:臨時重定向。該狀态碼表示請求的資源已被配置設定了新的URI,希望使用者(本次)能使用新的URI通路。
  • 303 See Other:303狀态碼與302Found狀态碼有者相同的功能,但303狀态碼明确表示用戶端應當采用GET方法擷取資源,這與302狀态碼不同。
  • 304 Not Modified:表示用戶端發送附帶條件的請求時,伺服器端允許請求通路資源,但未滿足條件的情況。304雖然被劃分在3XX類别中,但是和重定向沒有關系。
  • 307 Temporary Redirect:臨時重定向。

4XX用戶端錯誤

4XX的相應結果表明用戶端是發生錯誤的原因所在。

  • 400 Bad Request:該狀态碼表示請求封包中存在文法錯誤。
  • 401 Unauthorized:該狀态碼表示發送的請求需要有通過HTTP認證的認證資訊。另外,若之前以進行過一次請求,則表示使用者認證失敗。
  • 403 Forbidden:表明對請求資源的通路被伺服器拒絕了。
  • 404 Not Found:表示伺服器上無法找到請求的資源。除此之外,也可以在伺服器端拒絕請求且不想說明理由時使用。

5XX伺服器錯誤

5XX的響應結果表明伺服器本身發生錯誤。

  • 500 Internal Server Error:該狀态碼表明伺服器端在執行請求時發生了錯誤。
  • 503 Service Unavailable:該狀态碼表明伺服器暫時處于超負荷或正在進行停機維護,現在無法處理請求。

HTTP和HTTPS

在HTTP協定中有可能存在資訊竊聽或身份僞裝等安全問題。使用HTTPS通信機制可以有效地防止這些問題。在了解HTTPS之前我們先看看HTTP的缺點。

HTTP的缺點

通信使用明文可能會被竊聽

由于HTTP本身不具備加密的功能,是以也無法做到對通信整體(使用HTTP協定通信的請求和響應的内容)進行加密。即,HTTP封包使用明文(指未經過加密的封包)方式發送。

處理辦法:加密處理防止被竊聽。

  • 通信的加密:一種方式就是将通信加密。HTTP協定中沒有加密機制,但可以通過和SSL(Secure Socket Layer,安全套接層)或TSL(Transport Layer Security,安全層傳輸協定)的組合使用,加密HTTP的通信内容。
  • 内容的加密:還有一種将參與通信的内容本身加密的方式。由于HTTP協定中還沒有加密機制,那麼就對HTTP協定傳輸的内容本身加密。即把HTTP封包裡的所有内容進行加密處理。

不驗證通信方的身份就可能遭遇僞裝

HTTP協定中的請求和響應不會對通信放進行确認。也就是說存在“伺服器是否就是發送請求中URI真正指定的主機,傳回的相應是否真的傳回到實際提出請求的用戶端”等類似問題。

無法證明封包完整性,可能已遭篡改

所謂完整性是指資訊的準确度。若無法證明其完整性,通常也就意味着無法判斷資訊是否準确。

由于HTTP協定無法證明通信的封包完整性,是以,在請求或響應送出之後直到對方接收之前的這段時間,即使請求或響應的内容遭到篡改,也沒辦法獲悉。

HTTP+加密+認證+完整性保護=HTTPS

HTTP加上加密處理和認證以及完整性保護後即是HTTPS。

如果在HTTP協定通信過程中使用未經加密的明文,比如在web頁面中輸入信用卡号,若遭到竊聽,那麼就暴露了卡号。另外,對于HTTP來說,伺服器和用戶端都沒有辦法确認通信方。

為了解決上述問題,需要在HTTP上再加入加密處理和認證等機制。我們把添加了加密及認證的HTTP稱為HTTPS。

HTTPS是身披SSL外殼的HTTP

HTTPS并非是應用層的一種新協定。隻是HTTP通信接口部分用SSL和TSL協定替代而已。

通常,HTTP直接和TCP通信。當使用SSL時,則演變成先和SSL通信再由SSL和TCP通信了。簡言之,所謂HTTPS,其實就是身披SSL協定這層外殼的HTTP。在采用SSL後,HTTP就擁有了HTTPS的加密、證書和完整性保護這些功能。

HTTP狀态碼、HTTP和HTTPSHTTP狀态碼HTTP和HTTPS加密技術

加密技術

SSL采用一種叫做公開密鑰加密的加密處理方式。近代的加密方法中加密算法是公開的,而密鑰确實保密的。通過這種方式得以保持加密方法的安全性。

共享密鑰加密

加密和解密同用一個密鑰的方式稱為共享密鑰加密(Common key crypto system),也稱作對稱密鑰加密。

HTTP狀态碼、HTTP和HTTPSHTTP狀态碼HTTP和HTTPS加密技術

以共享密鑰方式加密時必須将密鑰也發給對方。可如何安全轉交呢?若在轉發密鑰時被監聽,那麼也就失去了加密的意義,并且還要設法安全的保管收到的密鑰。

使用兩把密鑰的公開密鑰加密

也就是非對稱加密,這種方式很好的解決了共享密鑰加密的困難。

使用一對非對稱的密鑰。一把叫做私有密鑰,另一把叫做公開密鑰。顧名思義,私有密鑰不能讓任何人知道,而公開密鑰則可以随意釋出,任何人都可以獲得。

使用公開密鑰加密方式,發送密文的一方使用對方的公開密鑰進行加密處理,對方收到被加密的資訊,再使用自己的私有密鑰進行解密。

HTTP狀态碼、HTTP和HTTPSHTTP狀态碼HTTP和HTTPS加密技術

HTTPS采用混合加密機制

HTTPS采用共享密鑰和公開密鑰加密兩者并用的混合加密機制。若密鑰能夠實作安全交換,那麼有可能會考慮僅使用公開密鑰加密來通信。但是公開密鑰與共享密鑰加密相比,其處理速度要慢。

是以應充分利用兩者各自的優勢,将多種方法組合起來用于通信。在交換密鑰環節使用公開密鑰加密方式,之後的建立通信交換封包階段則使用共享密鑰加密方式。

繼續閱讀