所有 SSL 文章 SSL 與憑證

自簽名證書 vs CA 簽名證書

自簽名證書是你自己建立的——你充當自己的憑證授權機構。CA 簽名證書由受信任的憑證授權機構(如 Let’s Encrypt 或 DigiCert)簽發,瀏覽器已經預置了對它們的信任。

實際區別:自簽名證書觸發瀏覽器安全警告,CA 簽名證書不會。

對比

自簽名CA 簽名
建立者你(openssl 命令)受信任的 CA
瀏覽器信任❌ 警告:“不受信任”✅ 鎖頭圖示
加密強度相同相同
費用免費免費(Let’s Encrypt)或付費
驗證無——你為自己擔保CA 驗證域名/組織
使用場景開發、內部、測試生產網站
續簽手動(你自定有效期)90 天(LE)或 1 年(付費)
中間人攻擊防護⚠️ 弱——使用者被訓練點選跳過警告✅ 強——僅真正問題時顯示警告

為什麼自簽名證書顯示警告

瀏覽器基於簽名者來信任證書。你的作業系統和瀏覽器自帶約 100-150 個受信任的根 CA 列表。當伺服器出示由這些 CA 之一簽名的證書時,瀏覽器顯示鎖頭圖示。

自簽名證書不是由任何受信任的 CA 簽名的——它由自己的私鑰簽名。瀏覽器無法驗證證書是否合法,因此顯示警告。這是正確的行為——沒有 CA 驗證,任何人都可以建立聲稱是 google.com 的證書。

何時使用自簽名證書

內部服務

不暴露於網際網路的服務——內部儀表板、監控工具、資料庫管理面板。你的團隊可以將自簽名 CA 新增到他們的信任儲存中。

開發和測試

本地開發的快速 HTTPS,當你不想設定 mkcert 時。瀏覽器警告雖然煩人,但測試時功能上沒問題。

物聯網和嵌入式裝置

與已知伺服器通訊並可以固定證書的裝置——不涉及瀏覽器信任儲存。

隔離網路

沒有網際網路訪問的網路,Let’s Encrypt 的 ACME 協議無法觸達。自簽名是唯一選擇。

何時不應使用自簽名證書

任何面向公眾的網站

使用者看到嚇人的警告然後離開。搜尋引擎可能不會抓取使用不受信任證書的 HTTPS 頁面。當 Let’s Encrypt 證書免費時,沒有理由使用自簽名。

任何處理使用者資料的站點

自簽名證書訓練使用者點選跳過安全警告——這與良好安全實踐恰恰相反。當真正的攻擊觸發警告時,習慣點選”繼續訪問”的使用者不會注意到。

如何建立自簽名證書

# ECDSA (recommended)
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=internal.example.com" \
  -addext "subjectAltName=DNS:internal.example.com,IP:10.0.0.5"

# RSA
openssl req -x509 -newkey rsa:2048 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=internal.example.com"

在伺服器配置中使用生成的 cert.pemkey.pem。注意:不需要 fullchain.pemchain.pem——自簽名證書沒有證書鏈。

每種場景的更好替代方案

場景替代自簽名,使用
生產網站Let’s Encrypt 透過 GetHTTPS —— 免費、受信任、5 分鐘
本地開發mkcert —— 本地受信任、無警告
內部服務Let’s Encrypt(如果可訪問網際網路)或私有 CA
測試/預釋出Let’s Encrypt 暫存環境 —— 無限測試證書

當 SSL 證書每年需要 $100 以上時,自簽名證書是有意義的。現在 Let’s Encrypt 免費,除了真正隔離的環境外,幾乎沒有理由使用自簽名。

常見問題

自簽名證書比 CA 簽名的安全性低嗎?

加密完全相同——相同的演算法、相同的金鑰強度。區別在於信任:CA 簽名證書透過受信任的第三方證明伺服器身份。自簽名證書什麼都不證明——任何人都可以為任何域名建立一個。安全問題不在密碼學,而在缺乏認證。

能讓瀏覽器信任我的自簽名證書嗎?

可以,在你控制的機器上。將證書(或簽署它的自簽名 CA)匯入作業系統/瀏覽器信任儲存。這就是 mkcert 自動化的操作。但你不能讓其他人的瀏覽器信任它——那需要真正的 CA。

我的主機商給了我自簽名證書,這可以嗎?

對於公開網站,不行。讓你的主機商啟用免費的 Let’s Encrypt(大多數主機都支援)。如果他們不支援,使用 GetHTTPS 自己獲取受信任的證書。

為什麼不直接建立自己的 CA?

可以,但瀏覽器不會信任它,除非你經歷了漫長且昂貴的加入瀏覽器信任儲存的過程。私有 CA 適用於內部基礎設施(你的團隊安裝根證書),但不適用於公開網站。對於公開站點,使用受信任的 CA 如 Let’s Encrypt。

相關文章

SSL 與憑證 2026-05-07
什麼是憑證授權機構(CA)?
憑證授權機構簽發 SSL 證書以證明網站身份。瞭解 CA 的工作原理、信任模型、主要 CA,以及 Let's Encrypt 如何改變了行業。
部署 2026-05-08
本地開發 HTTPS:localhost SSL 證書配置
使用 mkcert 在 localhost 上設定受信任的 HTTPS——無瀏覽器警告。涵蓋 mkcert 配置、自簽名證書以及為什麼 Let's Encrypt 無法為 localhost 簽發證書。
快速開始 2026-05-08
如何獲取免費 SSL 證書(分步指南)
5 分鐘從 Let's Encrypt 獲取免費 SSL 證書 — 無需安裝軟體、無需註冊賬號。涵蓋 4 種方法、兩種驗證方式、6 個平臺的安裝教程和故障排除。
在瀏覽器中取得免費 SSL 憑證
無需安裝,無需帳號。私鑰始終留在你的裝置上。
取得憑證