多網域 SSL 證書(也稱為 SAN 或 UCC 證書)用一張證書保護多個不同的網域。無需為 example.com、example.org 和 myapp.io 分別管理證書,一張 SAN 證書即可全部覆蓋。
這與萬用字元證書不同,萬用字元覆蓋的是一個網域的子網域。SAN 證書可以覆蓋完全不同的網域。
SAN 證書的工作原理
SAN 代表 Subject Alternative Name(主體備用名稱)——X.509 證書標準中的一個欄位,列出證書有效的額外網域。當瀏覽器連線到伺服器時,它會檢查請求的網域是否匹配任何 SAN 條目。
多網域證書內部看起來是這樣的:
Certificate for:
CN: example.com
SAN: example.com
SAN: www.example.com
SAN: example.org
SAN: api.myapp.io
這四個網域都由一張證書和一個私鑰保護。如果請求的主機名匹配任何 SAN 條目,瀏覽器就接受連線。
限制: Let’s Encrypt 支援每張證書最多 100 個 SAN 條目。商業 CA 各有不同——有些允許 250+,有些按條目收費。
常見使用場景
多個品牌網域
你運營 brandname.com、brandname.co.uk 和 brandname.de。一張 SAN 證書覆蓋所有三個,無需為每個地區分別管理證書。
網域 + www 變體
最常見的 SAN 用途:example.com + www.example.com。大多數證書會自動包含兩者。GetHTTPS 在你輸入裸網域時會提示你新增 www 變體。
不同網域上的微服務
你的 API 在 api.company.com,文件在 docs.company.com,營銷站點在 company.com。一張 SAN 證書保護所有三個。如果它們都是子網域,萬用字元可能更簡單。
網域遷移
從 olddomain.com 遷移到 newdomain.com?覆蓋兩者的 SAN 證書讓你在過渡期間為兩個網域提供 HTTPS,無需維護兩張獨立證書。
SAN vs 萬用字元
| SAN(多網域) | 萬用字元 | |
|---|---|---|
| 覆蓋範圍 | 特定列出的網域 | 一個網域的所有子網域 |
| 跨域 | ✅ example.com + other.com | ❌ 僅限一個基礎網域 |
| 新網域 | 需要新證書 | 新子網域自動覆蓋 |
| 驗證型別 | HTTP-01 或 DNS-01 | 僅 DNS-01 |
| 證書大小 | 隨 SAN 條目增加而增長 | 固定 |
| 使用場景 | 多個不同網域 | 一個網域的多個子網域 |
| Let’s Encrypt 限制 | 每證書 100 個名稱 | 每證書 1 個萬用字元(可與 SAN 組合) |
可以組合兩者: 一張證書可以同時包含 example.com、*.example.com 和 other.com 作為 SAN 條目。這種做法常用於在一張證書中覆蓋裸網域、所有子網域和額外網域。
透過 GetHTTPS 獲取多網域證書
- 前往 gethttps.com/app/setup
- 輸入所有要覆蓋的網域:
example.com、www.example.com、example.org - 為每個網域完成驗證 —— HTTP-01(放置檔案)或 DNS-01(新增 TXT 記錄)
- GetHTTPS 在提交到 Let’s Encrypt 之前會預檢每個驗證
- 下載一張覆蓋所有網域的證書
每個網域需要單獨驗證,因為 Let’s Encrypt 必須獨立確認你控制每一個網域。GetHTTPS 按順序處理——你驗證一個,然後驗證下一個。
示例:3 個網域,混合驗證方式
| 網域 | 驗證型別 | 操作 |
|---|---|---|
example.com | HTTP-01 | 在伺服器上放置檔案 |
www.example.com | HTTP-01 | 同一伺服器,相同流程 |
example.org | DNS-01 | 新增 TXT 記錄(不同的 DNS 提供商) |
三個都透過後,你獲得一組覆蓋所有三個網域的證書檔案(fullchain.pem、privkey.pem)。
安裝多網域證書
安裝與單網域證書完全相同。伺服器不關心證書中有多少 SAN——使用相同的檔案。
Nginx:
server {
listen 443 ssl http2;
server_name example.com www.example.com example.org;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
}
Apache:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com example.org
SSLEngine on
SSLCertificateFile /etc/ssl/cert.pem
SSLCertificateKeyFile /etc/ssl/privkey.pem
SSLCertificateChainFile /etc/ssl/chain.pem
</VirtualHost>
如果網域指向不同的伺服器,在每臺伺服器上安裝相同的證書檔案。證書對所有列出的網域有效,無論哪臺伺服器提供它。
常見問題
SAN 證書更貴嗎?
使用 Let’s Encrypt 時不會。你可以透過 GetHTTPS 在一張免費證書中包含最多 100 個網域。某些商業 CA 每增加一個 SAN 條目收費 $10-50。
所有網域需要在同一臺伺服器上嗎?
不需要。證書在任何伺服器上都有效。在需要為任何列出網域提供服務的每臺伺服器上安裝相同的 fullchain.pem 和 privkey.pem。
能向現有 SAN 證書新增網域嗎?
不能直接新增——已簽發的證書不能修改。你需要申請一張包含所有網域(現有 + 新的)的新證書。透過 GetHTTPS,這隻需幾分鐘。
什麼時候應該使用獨立證書?
在以下情況使用獨立證書:
- 不同團隊管理不同網域(獨立金鑰 = 獨立訪問控制)
- 需要不同的續簽計劃
- 隔離很重要 —— 一個金鑰的洩露不應影響其他網域
- 超過 100 個名稱 —— 分散到多張證書
SAN 如何影響證書大小?
每個 SAN 條目為證書增加約 30-50 位元組。100 個條目時,證書增大幾 KB。對 TLS 握手速度的影響可以忽略。
SAN 和 UCC 有什麼區別?
UCC(Unified Communications Certificate)是 Microsoft 對多網域 SAN 證書的稱呼,最初為 Exchange 和 Office Communications Server 設計。從技術上講它們是同一個東西——一張包含多個 SAN 條目的證書。