
什么是 SAN 证书?
SAN 证书(主体备用名称证书),也称为多域名 SSL 或 UCC(统一通信证书),是一张单独的 SSL 证书,可以在一张证书内保护多个完全不同的域名。与其为每个域名购买单独的 SSL 证书不同,SAN 证书在一张证书中将所有域名列为主体备用名称。
例如,一个拥有多个网络资产的公司可以用一张 SAN 证书覆盖所有这些域名:
example.com
example.co.th
example.net
shop.example.com
api.example.com
another-brand.com
SAN 证书 vs 通配符 SSL:主要差异
| 特性 | SAN 证书 | 通配符 SSL |
|---|---|---|
| 覆盖不同域名 | ✓ 可以 (example.com + another.com + shop.net) | ✗ 仅同一域名的子域 |
| 子域数量 | 限于购买的 SAN 条目数 | 一个域名的无限子域 |
| 覆盖示例 | example.com、another.com、shop.net | *.example.com (所有子域) |
| 后续添加域名 | 需要重新签发证书 | 无需修改证书 |
| 价格 (AsiaGB) | 根据 SAN 条目数计费 | 5,000 泰铢/年起 |
| 最适用于 | 多个不同的域名 (.com + .co.th + .net) | 一个域名的多个子域 |
使用 SAN 证书的优势
- 成本节省 — 一张 SAN 证书覆盖 5 个域名可能比购买 5 张单独的 DV SSL 证书便宜
- 管理简化 — 一个续期日期,而不是跟踪 5 个不同的过期日期
- 跨越完全不同的域名 — 通配符 SSL 无法做到的功能
- 支持内部主机名 — 某些 SAN 证书可以包含内部主机名(如 mail.internal)或 IP 地址
- 降低服务器复杂性 — 在服务器上管理一张证书,而不是多张
何时使用 SAN 证书
在以下情况下 SAN 证书是正确选择:
- 公司拥有多个 TLD — 例如 example.com、example.co.th、example.net、example.org 都需要 HTTPS
- 运营多个品牌 — 单一公司为每条产品线使用单独的域名
- Microsoft Exchange 或内部邮件服务器 — 通常需要同时覆盖 mail.company.com、autodiscover.company.com 和 owa.company.com(这正是 "UCC" 最初的设计目的)
- SaaS 公司的客户自定义域名 — 每个客户使用不同的域名指向同一个平台
提示:如果你有同一个域名的多个子域 — shop.example.com、api.example.com、blog.example.com — 应改用通配符 SSL (*.example.com)。当你的域名确实互不相同时,SAN 证书最具价值。
如何检查现有证书中的 SAN 条目
openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -text | grep -A 10 "Subject Alternative Name"
输出列出证书中的所有 DNS 条目,例如:DNS:example.com, DNS:example.co.th, DNS:www.example.com
SAN 证书与 Let's Encrypt
Let's Encrypt 支持免费的 SAN 证书,每张证书最多覆盖 100 个域名。使用 Certbot:
certbot certonly --webroot \
-w /var/www/example \
-d example.com \
-d example.co.th \
-d shop.example.com \
--email [email protected] \
--agree-tos
但是,Let's Encrypt 仅颁发 DV SAN 证书。对于 OV 或 EV 多域名证书(企业和金融机构所需),你需要从 DigiCert 或 GeoTrust 等 CA 购买付费证书,这两种证书都可通过 AsiaGB 获得。
SAN 证书与 IP 地址
SAN 证书可以将 IP 地址作为 SAN 条目(称为 IP SAN 或 IP SSL),支持直接 IP 访问的 HTTPS — 对内部 API、监控仪表板或不使用域名的系统很有用。注意 Let's Encrypt 不支持 IP SAN;只有商业 CA 的付费 SSL 证书才支持此功能。
常见问题
一张 SAN 证书最多能覆盖多少个域名?
这取决于证书产品和 CA。商业 SAN 证书通常支持 3–250 个 SAN 条目,每增加一个域名价格会上升。Let's Encrypt 免费支持每张证书最多 100 个域名。
我能给已有的 SAN 证书添加更多域名吗?
可以,但必须用额外的 SAN 条目重新签发证书。重新签发时,CA 会签发新证书,旧证书在新证书安装后自动撤销。大多数商业 CA 允许在证书有效期内无限次免费重新签发。
SAN 证书可以同时包含通配符和精确域名吗?
可以。SAN 证书可以混合精确域名和通配符条目 — 例如,在一张证书中同时包含 example.com + *.example.com + another.com + *.another.com。这种类型称为多域名通配符 SSL,通常价格较高。
在 Web 服务器上安装 SAN 证书
CA 签发 SAN 证书后,安装过程遵循与标准 SSL 证书相同的流程 — 但有一个关键要求:SAN 条目中列出的每个域名都必须有正确配置的虚拟主机或服务器块。
Apache 配置
在 Apache 中,SAN 证书中的每个域名都需要自己的 VirtualHost 块。所有块都引用相同的证书文件:
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/san-certificate.crt
SSLCertificateKeyFile /etc/ssl/private/san-certificate.key
SSLCertificateChainFile /etc/ssl/certs/ca-bundle.crt
</VirtualHost>
<VirtualHost *:443>
ServerName example.co.th
SSLEngine on
SSLCertificateFile /etc/ssl/certs/san-certificate.crt
SSLCertificateKeyFile /etc/ssl/private/san-certificate.key
SSLCertificateChainFile /etc/ssl/certs/ca-bundle.crt
</VirtualHost>
Nginx 配置
Nginx 使多域名 SSL 更简单 — 在单个服务器块中使用 server_name 列出所有 SAN 域名:
server {
listen 443 ssl;
server_name example.com example.co.th;
ssl_certificate /etc/ssl/certs/san-certificate.crt;
ssl_certificate_key /etc/ssl/private/san-certificate.key;
}
| CA 提供的文件 | 用途 | Apache / Nginx 指令 |
|---|---|---|
| certificate.crt | 主证书(包含 SAN 条目) | SSLCertificateFile / ssl_certificate |
| private.key | 私钥(保持机密) | SSLCertificateKeyFile / ssl_certificate_key |
| ca-bundle.crt | 中间 CA 链 | SSLCertificateChainFile / (Nginx 中与 .crt 连接) |
SAN 证书的限制和风险
SAN 证书很强大,但了解其限制有助于你做出明智的决定,并避免部署后出现意外。
- 添加域名需要重新签发 — 与通配符 SSL 可以立即覆盖任何新子域不同,添加新域名到 SAN 证书需要完整重新签发,包括新域名的重新验证。
- 撤销的证书同时影响所有域名 — 由于所有域名共享一张证书,私钥泄露意味着撤销时所有域名同时下线。
- 成本随每个 SAN 条目增加 — 与通配符 SSL 价格固定不同,SAN 定价随条目数增加而增加。
- 每个域名都需验证 — CA 必须验证每个作为 SAN 条目的域名的所有权。任何域名验证失败,证书就无法签发。
- 不支持多级通配符 — SAN 证书支持
*.example.com作为 SAN 条目,但任何商业 CA 都不支持*.*.example.com。
决策总结:当域名确实互不相同(不同的 TLD 或品牌名)时使用 SAN 证书。当一个域名有多个子域时使用通配符 SSL。当两者都需要时使用多域名通配符 SSL。
真实成本对比:SAN 证书 vs 分别购买
许多组织不确定 SAN 证书是否真的比购买单独的 SSL 证书便宜。下表比较典型场景的总体拥有成本:
| 场景 | 选项 | 年度成本(泰铢) | 管理开销 |
|---|---|---|---|
| 5 个不同域名(不同 TLD) | 5 × DV SSL 分别购买 (RapidSSL) | 5 × 1,000 = 5,000 | 5 个续期日期、5 张证书 |
| 5 个不同域名(不同 TLD) | SAN 证书,5 个条目 | 根据 SAN 条目数 | 1 个续期日期、1 张证书 |
| 10 个子域,同一域名 | 10 × DV SSL 分别购买 | 10 × 1,000 = 10,000 | 10 个续期日期 |
| 10 个子域,同一域名 | 通配符 SSL (RapidSSL) | 5,000 — 无限子域 | 1 个续期日期、1 张证书 |
除直接成本外,隐性成本是跟踪多个过期日期的管理时间。一张过期的证书造成的浏览器安全警告会直接损害用户信任和转化率。
监控 SAN 证书过期
由于 SAN 证书同时覆盖多个域名,其过期会同时影响所有这些域名。监控和提前续期比单域名证书更为关键。遵循以下最佳实践:
- 在过期前 60 天设置续期提醒 — 这样你有时间在必要时用更新的 SAN 条目重新签发
- 使用自动化 SSL 监控 — 诸如 UptimeRobot、StatusCake 或自托管 Uptime Kuma 实例之类的工具可以在任何域名的 SSL 即将过期时提醒你
- 使用 OpenSSL 检查验证过期日期并确认证书中仍存在所有预期的域名
# Check certificate expiry date
echo | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates
# List all SAN entries in the certificate
echo | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -text | grep -A5 "Subject Alternative"
AsiaGB 为各种使用场景提供 SSL 证书 — 从适用于一般网站的 DV SAN 证书到企业和金融机构所需的 OV 和 EV SAN 证书。我们的团队可以为你的域名结构建议正确的 SAN 条目数,并在你添加新域名时协助重新签发。
需要多域名 SSL 吗?
AsiaGB 为各种使用场景提供 SSL 证书 — DV SSL 1,000 泰铢/年起,通配符 SSL 5,000 泰铢/年起,多域名 SAN 证书来自 RapidSSL、GeoTrust 和 DigiCert。
查看所有 SSL 证书