當你使用 Cloudflare 作為 CDN/代理時,訪客連線到 Cloudflare 的邊緣伺服器。但 Cloudflare 和你的源站伺服器之間的連線呢?如果源站沒有證書,該連線可能是未加密的——這就違背了 HTTPS 的意義。
Cloudflare SSL 模式詳解
| 模式 | 訪客 → Cloudflare | Cloudflare → 源站 | 安全性 |
|---|---|---|---|
| Off | HTTP | HTTP | ❌ 無加密 |
| Flexible | HTTPS ✅ | HTTP ❌ | ⚠️ 虛假安全感 |
| Full | HTTPS ✅ | HTTPS(未驗證) | ⚠️ 已加密但不驗證證書 |
| Full (Strict) | HTTPS ✅ | HTTPS(已驗證)✅ | ✅ 推薦 |
“Flexible” 模式是危險的。 你的訪客看到鎖頭圖示,但 Cloudflare→源站的連線是明文 HTTP。網路路徑上的任何人都能讀取流量。始終使用 Full (Strict)。
使用 Let’s Encrypt 證書配置 Full (Strict)
最佳方案:在源站安裝一個真正的、公開信任的證書,然後啟用 Full (Strict)。
第一步:獲取 Let’s Encrypt 證書
使用 GetHTTPS 為你的域名獲取免費證書。你需要臨時禁用 Cloudflare 代理(DNS 設定中的灰色雲朵)以便 HTTP-01 驗證到達你的源站,或者使用 DNS-01 驗證(無論代理狀態都可用)。
DNS-01 方式(無需更改代理):
- 在 GetHTTPS 中,選擇 DNS-01 驗證
- 在 Cloudflare DNS 中新增
_acme-challengeTXT 記錄 - 完成驗證並下載證書
HTTP-01 方式:
- 在 Cloudflare DNS 中,將橙色雲朵 → 灰色雲朵(僅 DNS)
- 在 GetHTTPS 中完成 HTTP-01 驗證
- 獲取證書後,重新啟用橙色雲朵(代理模式)
第二步:安裝到源站伺服器
第三步:在 Cloudflare 中啟用 Full (Strict)
- 前往 Cloudflare 控制面板 → 你的域名
- SSL/TLS → Overview
- 選擇 Full (Strict)
Cloudflare 現在會在連線之前驗證你的源站是否擁有有效的受信任證書。
替代方案:Cloudflare Origin CA 證書
Cloudflare 提供自己的 Origin CA 證書——免費證書,僅被 Cloudflare 信任,瀏覽器不直接信任。
如何獲取
- Cloudflare 控制面板 → SSL/TLS → Origin Server
- 點選 Create Certificate
- 選擇金鑰型別(RSA 或 ECDSA)和有效期(最長 15 年)
- 下載證書和私鑰
- 安裝到源站伺服器
與 Let’s Encrypt 的優劣對比
| Cloudflare Origin CA | Let’s Encrypt (透過 GetHTTPS) | |
|---|---|---|
| 被誰信任 | 僅 Cloudflare | 所有瀏覽器(公開信任) |
| 有效期 | 最長 15 年 | 90 天 |
| 需要自動續簽 | 不需要(有效期長) | 需要(每 60-90 天) |
| 脫離 Cloudflare 可用 | ❌ | ✅ |
| 瀏覽器直接訪問 | ❌(顯示錯誤) | ✅ |
| 費用 | 免費 | 免費 |
使用 Cloudflare Origin CA 的情況:你的源站始終在 Cloudflare 後面,且你希望零續簽管理。
使用 Let’s Encrypt 的情況:你可能會繞過 Cloudflare(維護、遷移),需要直接訪問源站,或者需要一個在任何地方都能工作的證書。
驗證 Full (Strict) 是否正常工作
設定完成後,測試連線是否完全加密:
- Cloudflare 控制面板 → SSL/TLS → Overview 應顯示”Full (Strict)”
- 訪問你的網站 → 訪客應該看到 Cloudflare 的證書
- 直接檢查源站(繞過 Cloudflare):
這應該返回一個有效的 HTTPS 響應,帶有你的 Let’s Encrypt(或 Origin CA)證書。curl -I --resolve yourdomain.com:443:YOUR_ORIGIN_IP https://yourdomain.com
常見問題
為什麼不直接用 Flexible 模式?
Flexible 模式加密了訪客→Cloudflare 的連線,但從 Cloudflare 到源站的流量是明文 HTTP。這意味著:
- 你的 ISP、主機提供商或 Cloudflare 邊緣與你伺服器之間網路上的任何人都能讀取所有流量
- 你的訪客看到鎖頭圖示,以為自己是安全的,但後端連線並不安全
- 這對登入頁面、支付表單或任何敏感資料來說尤其危險
源站證書需要與域名完全匹配嗎?
對於 Full (Strict) 模式,是的——源站證書必須對 Cloudflare 連線的域名有效。example.com 的 Let’s Encrypt 證書可以工作。自簽名證書或其他域名的證書則不行。
可以使用萬用字元證書作為源站證書嗎?
可以。源站上的 *.example.com 萬用字元證書 可以配合 Full (Strict) 用於透過 Cloudflare 代理的任何子域名。
源站證書過期會怎樣?
Cloudflare 的 Full (Strict) 模式會檢查證書有效性。如果你的源站證書過期,Cloudflare 無法建立安全連線,你的網站會顯示 526 錯誤(Invalid SSL Certificate)。設定過期監控來防止這種情況。