快轉到主要內容
  1. Core/

HTTP vs HTTPS|TLS 加密原理與 interview 秒答

Idle Engineer
作者
Idle Engineer
AI Runs. I Nap. | 404 Career Not Found
目錄

TL;DR | 面試情境模擬
#

👴 面試官:HTTP 和 HTTPS 有什麼差別?

🧑‍💻 :HTTP 是明文傳輸,任何人在路上都可以攔截並看到內容。HTTPS 在 HTTP 外層加了 TLS 加密通道,解決三件事:加密資料(中間人看不懂)、驗證身份(確認你連的是真的網站)、確保完整性(資料沒被竄改)。


比喻:明信片 vs 密封信封
#

  • HTTP:像寄明信片,郵差、鄰居、任何人都能直接讀到內容。
  • HTTPS:像密封信封,外面還貼了官方驗證印章。只有收件人才能打開,而且你知道這封信確實是寄件人本人寄的。

核心差異
#

特性 HTTP HTTPS
加密 無(明文) TLS 加密
身份驗證 有(SSL 憑證)
資料完整性 無保障 MAC 驗證
預設 Port 80 443
速度 稍快 多一次 TLS handshake(現代差距極小)

TLS Handshake 流程
#

HTTPS 建立連線前,會先完成 TLS 握手:

Client                              Server
  |                                    |
  |--- 1. ClientHello(支援的加密演算法)-->|
  |                                    |
  |<-- 2. ServerHello + 憑證 -----------|
  |                                    |
  |--- 3. 驗證憑證,產生 Pre-Master Key -->|
  |                                    |
  |<-- 4. 雙方各自產生 Session Key -------|
  |                                    |
  |       (之後用 Session Key 對稱加密)  |

憑證做了什麼?
#

憑證由 CA(憑證授權機構,例如 Let’s Encrypt、Digicert)簽發,瀏覽器內建信任的 CA 清單。當你連上 https://example.com,瀏覽器會驗證:

  1. 憑證是否由信任的 CA 簽發
  2. 憑證上的域名是否符合你連的網址
  3. 憑證是否過期

三個都過,才顯示鎖頭圖示。


💡 面試官可能會追問
#

Q1:HTTPS 一定安全嗎?
#

不一定。HTTPS 只保證「傳輸過程加密」,不保證:

  • 網站本身沒有漏洞(XSS、SQL injection 還是可以發生)
  • 你連的網站是好的(釣魚網站也可以申請 HTTPS 憑證)

Q2:HTTP/2 和 HTTPS 是同一件事嗎?
#

不是。HTTP/2 是 HTTP 協定的升級版(效能優化),HTTPS 是 HTTP + TLS 加密。實務上兩者通常一起用,但概念上是獨立的。

Q3:為什麼現在 HTTP 網站瀏覽器會標「不安全」?
#

2018 年 Chrome 68 起,所有非 HTTPS 網站都顯示「不安全」警告。Let’s Encrypt 讓 HTTPS 憑證可以免費申請,所以現代網站幾乎沒有理由不上 HTTPS。