HTTP 和 HTTPS 的異同

Web開發者發表於2012-04-30

什麼是 HTTPS?

HTTPS (基於安全套接字層的超文字傳輸協議 或者是 HTTP over SSL) 是一個 Netscape 開發的 Web 協議。

你也可以說:HTTPS = HTTP + SSL

HTTPS 在 HTTP 應用層的基礎上使用安全套接字層作為子層。

為什麼需要 HTTPS :

超文字傳輸協議 (HTTP) 是一個用來通過網際網路傳輸和接收資訊的協議。HTTP 使用請求/響應的過程,因此資訊可在伺服器間快速、輕鬆而且精確的進行傳輸。當你訪問 Web 頁面的時候你就是在使用 HTTP 協議,但 HTTP 是不安全的,可以輕鬆對竊聽你跟 Web 伺服器之間的資料傳輸。在很多情況下,客戶和伺服器之間傳輸的是敏感歇息,需要防止未經授權的訪問。為了滿足這個要求,網景公司(Netscape)推出了 HTTPS,也就是基於安全套接字層的 HTTP 協議。

HTTP 和 HTTPS 的相同點:

大多數情況下,HTTP 和 HTTPS 是相同的,因為都是採用同一個基礎的協議,作為 HTTP 或 HTTPS 客戶端——瀏覽器,設立一個連線到 Web 伺服器指定的埠。當伺服器接收到請求,它會返回一個狀態碼以及訊息,這個迴應可能是請求資訊、或者指示某個錯誤傳送的錯誤資訊。系統使用統一資源定位器 URI 模式,因此資源可以被唯一指定。而 HTTPS 和 HTTP 唯一不同的只是一個協議頭(https)的說明,其他都是一樣的。

HTTP 和 HTTPS 的不同之處:

1. HTTP 的 URL 以 http:// 開頭,而 HTTPS 的 URL 以 https:// 開頭
2. HTTP 是不安全的,而 HTTPS 是安全的
3. HTTP 標準埠是 80 ,而 HTTPS 的標準埠是 443
4. 在 OSI 網路模型中,HTTP 工作於應用層,而 HTTPS 工作在傳輸層
5. HTTP 無需加密,而 HTTPS 對傳輸的資料進行加密
6. HTTP 無需證書,而 HTTPS 需要認證證書

HTTPS 如何工作?

使用 HTTPS 連線時,伺服器要求有公鑰和簽名的證書。

當使用 https 連線,伺服器響應初始連線,並提供它所支援的加密方法。作為迴應,客戶端選擇一個連線方法,並且客戶端和伺服器端交換證書驗證彼此身份。完成之後,在確保使用相同金鑰的情況下傳輸加密資訊,然後關閉連線。為了提供 https 連線支援,伺服器必須有一個公鑰證書,該證書包含經過證書機構認證的金鑰資訊,大部分證書都是通過第三方機構授權的,以保證證書是安全的。

換句話說,HTTPS 跟 HTTP 一樣,只不過增加了 SSL。

HTTP 包含如下動作:

1. 瀏覽器開啟一個 TCP 連線
2. 瀏覽器傳送 HTTP 請求到伺服器端
3. 伺服器傳送 HTTP 迴應資訊到瀏覽器
4. TCP 連線關閉

SSL 包含如下動作:

1. 驗證伺服器端
2. 允許客戶端和伺服器端選擇加密演算法和密碼,確保雙方都支援
3. 驗證客戶端(可選)
4. 使用公鑰加密技術來生成共享加密資料
5. 建立一個加密的 SSL 連線
6. 基於該 SSL 連線傳遞 HTTP 請求

什麼時候該使用 HTTPS?

銀行網站、支付閘道器、購物網站、登入頁、電子郵件以及一些企業部門的網站應該使用 HTTPS,例如:

PayPal: https://www.paypal.com

Google AdSense: https://www.google.com/adsense/

如果某個網站要求你填寫信用卡資訊,首先你要檢查該網頁是否使用 https 加密連線,如果沒有,那麼請不要輸入任何敏感資訊如信用卡號。

瀏覽器整合

多數瀏覽器在收到一個無效證書的時候都會顯示警告資訊,而一些老的瀏覽器會彈出對話方塊讓使用者選擇是否繼續瀏覽。新的瀏覽器一般在整個視窗顯示橫幅的警告資訊,同時在位址列上顯示該網站的安全資訊。如果網站中包含加密和非加密的混合內容,多數瀏覽器會提示警告資訊。

相關文章