什么是 SAN 证书?一个 SSL 保护多个域名

什么是 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 证书

在以下情况下 SAN 证书是正确选择:

提示:如果你有同一个域名的多个子域 — 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 证书很强大,但了解其限制有助于你做出明智的决定,并避免部署后出现意外。

决策总结:当域名确实互不相同(不同的 TLD 或品牌名)时使用 SAN 证书。当一个域名有多个子域时使用通配符 SSL。当两者都需要时使用多域名通配符 SSL。

真实成本对比:SAN 证书 vs 分别购买

许多组织不确定 SAN 证书是否真的比购买单独的 SSL 证书便宜。下表比较典型场景的总体拥有成本:

场景 选项 年度成本(泰铢) 管理开销
5 个不同域名(不同 TLD)5 × DV SSL 分别购买 (RapidSSL)5 × 1,000 = 5,0005 个续期日期、5 张证书
5 个不同域名(不同 TLD)SAN 证书,5 个条目根据 SAN 条目数1 个续期日期、1 张证书
10 个子域,同一域名10 × DV SSL 分别购买10 × 1,000 = 10,00010 个续期日期
10 个子域,同一域名通配符 SSL (RapidSSL)5,000 — 无限子域1 个续期日期、1 张证书

除直接成本外,隐性成本是跟踪多个过期日期的管理时间。一张过期的证书造成的浏览器安全警告会直接损害用户信任和转化率。

监控 SAN 证书过期

由于 SAN 证书同时覆盖多个域名,其过期会同时影响所有这些域名。监控和提前续期比单域名证书更为关键。遵循以下最佳实践:

# 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 证书