术语表

多域名证书 (SAN 证书 / UCC 证书)

最后核实

定义

多域名证书是在 SAN 扩展中列出多个不同主机名、让一张证书同时保护多个域名的 TLS 证书。

多域名证书也叫 SAN 证书或 UCC(Unified Communications Certificate,统一通信证书),本质上就是一张普通的 X.509 TLS 证书,只是它的 SAN(主题备用名称)扩展里写了不止一个 DNS 名称。这些名称不必属于同一个主域:example.com、www.example.com、example.net、mail.example.org 可以放在同一张证书里,部分 CA 还允许混入通配符名称。UCC 这个叫法来自 Microsoft Exchange 等统一通信服务器,它们通常要同时响应多个主机名。

为什么重要

一张证书、一把私钥就能服务多个站点,部署和续期都更集中,适合一台服务器承载多个域名的场景。浏览器只用 SAN 里的名称匹配访问的主机名,Chrome 58 起不再回退检查通用名称(CN),所以每个域名都必须写进 SAN。每个名称都要单独完成域名验证,增删域名都需要重新签发证书。在宝塔面板里为一个站点申请 Let's Encrypt 证书时勾选多个域名,得到的就是一张多域名证书。

例子

openssl req -new -key example.com.key -out example.com.csr \
  -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.com,DNS:example.net"
openssl x509 -in example.com.crt -noout -ext subjectAltName

常见误区

  • CN 写对就行。 现代客户端忽略 CN,所有域名(包括 CN 里那个)都要出现在 SAN 中。
  • 证书里的域名必须属于同一家公司。 DV 证书只要求申请者能证明控制每个域名。
  • 证书里的其他域名别人看不到。 任何人查看证书都能看到全部名称,它们也会被公开记录到证书透明度日志里。

延伸阅读