首页/安全/加密与证书速查/SAN 多域名与 IP 证书

SAN 多域名与 IP 证书

SAN(subjectAltName)支持在同一张证书里列出多个 DNS 名与 IP 地址;使用 IP 访问的站点必须把 IP 放入 SAN,否则校验不过。名称数量受 CA 策略与证书体积约束。

加密与证书速查安全更新于 2026-10-13

SAN 是什么

SAN(subjectAltName)是证书里用来列名称的扩展,支持在同一张证书中放置多个域名与多个 IP 地址。现代客户端只按 SAN 做主机名校验,通用的名称字段早已不再作为匹配依据,因此用 IP 直连访问的站点必须把 IP 放进 IP 类型条目,否则校验一定失败。名称数量同时受 CA 策略、证书体积与轮换复杂度约束。

基本信息

语法DNS:example.com, DNS:api.example.com, IP:203.0.113.10
校验依据主机名匹配以 SAN 为准,通用名不再参与
IP 访问必须放入 IP 类型条目,写在域名类型里无效
查看命令openssl x509 -noout -ext subjectAltName

典型使用场景

  • 一张证书覆盖主域与若干子域,减少证书数量
  • 内网设备用 IP 直连时把内网 IP 写入 SAN
  • 多品牌或多业务域名需要统一证书时的规划
  • 排错:确认证书是否真的覆盖当前访问的名称
  • 评估轮换影响:名称越多,牵涉的依赖方越多

生成多域名 CSR 含 IP

生成多域名 CSR 含 IP
openssl req -new -key multi.key -out multi.csr -subj '/CN=example.com' \
  -addext 'subjectAltName=DNS:example.com,DNS:api.example.com,IP:203.0.113.10'
openssl req -in multi.csr -noout -text | grep -A2 'Alternative Name'   # 核对 CSR 内容
openssl x509 -in multi.crt -noout -ext subjectAltName                    # 核对签发结果

常见名称类型

类型写法匹配对象
域名DNS:example.com主机名,含通配符形式
地址IP:203.0.113.10IPv4 与 IPv6 地址
邮箱email:ops@example.com邮件地址认证场景
标识URI:https://example.com服务标识场景,通用证书少见
通配符形式的名称只匹配同一级子域,裸域不会自动包含;需要同时覆盖主域时必须在 SAN 里单独列出。

落地建议

  • 签发前先列全需要覆盖的名称,避免上线后补签
  • 内网 IP 变更即需重签,规划时尽量减少 IP 条目
  • 名称增多会放大私钥泄露影响面,应配套缩短轮换周期
  • 定期把证书覆盖范围与业务域名清单做比对
把大量互不相关的业务域名塞进同一张证书,会让单点泄露影响全部站点,也会让续期与部署变更集中在一处;按业务边界拆分更稳妥。

易错点

  • 内网 IP 写入 SAN 后地址变更:必须重签证书,规划时应尽量减少 IP 条目
  • 以为通用名仍参与匹配:现代客户端只按 SAN 校验,漏配名称会直接报名称不匹配
  • 把 IP 写成域名类型:语法合法但不参与 IP 匹配,表现为校验失败
  • 名称过多导致轮换与权限管理复杂化:单张证书影响面大,应按业务边界拆分
  • 依赖通配符覆盖多级子域:通配符只匹配同一级,多级名称必须单独列出

数据来源与参考

  • RFC 5280 §4.2.1.6(SAN)
  • RFC 6125(名称校验)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌