多域名 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 條目的證書。