證書透明度(CT)是一個將每張公開簽發的 SSL 證書記錄到公開、只可追加的日誌中的系統。這意味著任何人都可以檢視為任何域名簽發了哪些證書——並發現未授權或欺詐性的證書。
CT 由 Google 於 2013 年建立,起因是 CA 為不應簽發的域名簽發了證書(特別是 2011 年 DigiNotar 事件,該事件導致了偽造的 Google 證書)。自 2018 年起,所有受公開信任的 CA 必須將每張證書提交到 CT 日誌。
為什麼 CT 很重要
沒有 CT 的時代(2018 年之前)
CA 可以為不屬於你的域名(如 google.com)簽發證書,沒人會知道,直到該證書被積極用於攻擊。CA 完全基於信任運作。
有了 CT 之後
每張證書都被公開記錄。如果 CA 為 google.com 簽發了證書,它會在數小時內出現在 CT 日誌中。Google(或任何監控方)可以立即發現。
如何查詢你域名的 CT 日誌
crt.sh —— 最流行的 CT 搜尋工具
訪問 crt.sh 並輸入你的域名。你將看到該域名的所有已簽發證書:
- Issuer —— 哪個 CA 簽發的
- Not Before / Not After —— 有效期
- SAN —— 證書覆蓋的域名
Example results for example.com:
2026-05-08 Let's Encrypt R10 example.com, www.example.com
2026-02-15 Let's Encrypt R10 example.com
2025-11-20 Let's Encrypt R3 example.com, www.example.com
...
命令列搜尋
curl -s "https://crt.sh/?q=yourdomain.com&output=json" | jq '.[] | {issuer_name, not_before, not_after, common_name}'
需要關注的異常
- 你沒有申請過的證書 —— 可能有人在冒充你的域名
- 意外的 CA —— 如果你只使用 Let’s Encrypt 但看到 DigiCert 的證書,需要調查
- 你沒有建立的萬用字元證書 —— 來自未知來源的
*.yourdomain.com - 你不認識的子域名 —— 你未申請的證書中出現了
secret.yourdomain.com
CT 的技術原理
- CA 簽發證書並將其提交到一個或多個 CT 日誌
- CT 日誌返回 SCT(簽名證書時間戳)—— 證明證書已被記錄
- SCT 被嵌入證書中(或在 TLS 握手時提供)
- 瀏覽器驗證 SCT —— Chrome 要求證書具有來自至少 2-3 個 CT 日誌的有效 SCT
- 任何人都可以監控日誌中為其域名簽發的證書
CT 日誌是隻可追加的——證書只能新增,不能刪除或修改。這建立了一個可審計的歷史記錄。
設定 CT 監控
要進行自動化監控,使用在你的域名有新證書籤發時發出警報的服務:
| 工具 | 方式 | 費用 |
|---|---|---|
| crt.sh(手動) | 定期搜尋 | 免費 |
| Cert Spotter(SSLMate) | 新證書郵件提醒 | 免費套餐 |
| Facebook CT Monitor | 透過 Facebook 工具發出警報 | 免費 |
| Google Certificate Transparency | 搜尋 Google 的 CT 日誌 | 免費 |
CT 與 GetHTTPS
當你透過 GetHTTPS 獲取證書時,Let’s Encrypt 會自動將其提交到多個 CT 日誌。你可以在簽發後到 crt.sh 搜尋你的域名進行驗證——你的證書會在幾分鐘內出現。
這是設計使然——所有證書的公開記錄是一項安全特性,而非隱私問題。證書本身(域名、公鑰、CA)在 TLS 握手時已經會傳送給每個訪問者。
常見問題
我能選擇不加入證書透明度嗎?
對於公開信任的證書,不能。自 2018 年起,所有 CA 必須將證書提交到 CT 日誌。瀏覽器(Chrome、Safari)會拒絕沒有有效 SCT 的證書。私有/內部 CA 不受此限制——它們不提交到公開 CT 日誌。
CT 會洩露我伺服器的 IP 地址嗎?
不會。CT 日誌包含證書資訊(域名、公鑰、CA、有效期),但不包含伺服器的 IP 地址。DNS 記錄會暴露 IP——CT 日誌不會增加新的資訊。
我發現了一張我沒有申請的域名證書,該怎麼辦?
- 檢查簽發者——可能是你的主機商的 AutoSSL?
- 檢查 SAN——是否包含你認識的域名?
- 如果確實是未授權的,聯絡簽發 CA 請求吊銷
- 檢查你的 DNS 是否有未授權的更改——有人可能將你的域名指向了他們的伺服器
存在多少個 CT 日誌?
數十個。主要運營商包括 Google(Argon、Xenon)、Cloudflare(Nimbus)、DigiCert、Sectigo 和 Let’s Encrypt。瀏覽器要求 SCT 來自多個獨立日誌,以防止單個被入侵的日誌隱藏欺詐證書。