← 返回题目列表

HTTPS 证书的 SAN 和通配符域名是什么?浏览器如何做域名匹配?

中等 第 22 / 29 题 更新于 2026/08/02
HTTPSTLS数字证书

简化版

HTTPS 证书不仅要被可信 CA 签发,还要和访问的域名匹配。现代证书主要通过 Subject Alternative Name,简称 SAN,声明可用于哪些域名。

通配符证书如 *.example.com 通常只能匹配一级子域名,例如 a.example.com,不能匹配 a.b.example.com,也不能直接匹配根域 example.com,除非证书里单独包含这个 SAN。

面试回答要说清 3 点:信任链验证、有效期验证、域名匹配验证。

详细版

浏览器访问:

https://api.example.com

服务端返回证书后,浏览器会检查:

  • 证书链是否能追溯到受信任根 CA。
  • 证书是否在有效期内。
  • 证书是否被吊销。
  • 证书用途是否允许服务端认证。
  • 访问域名是否出现在 SAN 中。

示例 SAN:

DNS:example.com
DNS:*.example.com
DNS:api.internal.example.com

如果访问 api.example.com*.example.com 可以匹配;如果访问 example.com,必须有 example.com;如果访问 v1.api.example.com*.example.com 通常不能匹配。

完整版教学

1. 先把证书验证拆成几层

HTTPS 证书验证不是只看“证书是不是 CA 签的”。

浏览器会做一组检查。

证书链可信 -> 有效期合法 -> 用途正确 -> 域名匹配 -> 吊销状态可接受

其中域名匹配就是题目里 SAN 和通配符最常考的点。

域名匹配解决的是:这张证书是不是颁给我正在访问的这个主机名。

2. SAN 是现代证书的主角

早期证书里常用 Common Name,简称 CN,表示域名。

现代浏览器和 CA 生态更强调 SAN。

证书里可能有:

Subject: CN=example.com
Subject Alternative Name:
  DNS:example.com
  DNS:www.example.com
  DNS:api.example.com

浏览器做主机名校验时,主要看 SAN 中的 DNS 名称。

如果 SAN 不包含访问域名,即使 CN 看起来相似,也可能被判定不可信。

3. 通配符证书怎么匹配

通配符证书常见形式是:

DNS:*.example.com

它通常可以匹配:

  • www.example.com
  • api.example.com
  • img.example.com

但通常不能匹配:

  • example.com
  • v1.api.example.com
  • a.b.example.com

因为 * 一般只覆盖一个标签层级。

根域需要单独写进 SAN。

4. SAN 匹配示例表

证书 SAN访问域名是否匹配原因
example.comexample.com完全匹配
*.example.comapi.example.com通配一级子域名
*.example.comexample.com根域不被星号覆盖
*.example.comv1.api.example.com跨了 2 级
api.example.comwww.example.com主机名不同

这个表在面试里很好用,因为很多人会误以为通配符能覆盖所有层级。

5. 多域名证书和 SNI 的关系

一个证书可以有多个 SAN,因此可以保护多个域名。

例如:

DNS:example.com
DNS:www.example.com
DNS:api.example.net

但同一台服务器托管多个 HTTPS 域名时,服务端还要知道客户端要访问哪个域名,才能返回正确证书。

这通常依赖 TLS SNI。

SAN 解决“证书包含哪些名字”,SNI 解决“握手时服务端该选哪张证书”。

6. 线上常见错误

常见 HTTPS 证书域名问题包括:

  • 证书只包含 www.example.com,用户访问 example.com 报错。
  • 证书是 *.example.com,但业务访问 a.b.example.com 报错。
  • CDN 回源域名和源站证书域名不一致。
  • 测试环境使用生产域名证书但 Host 不匹配。
  • 证书更新后负载均衡仍加载旧证书。

排查时可以用浏览器证书详情或命令行查看 SAN。

openssl s_client -connect api.example.com:443 -servername api.example.com

7. 常见误区与追问

  • 误区:证书由 CA 签发就一定可用。 还必须和访问域名匹配,并满足有效期和用途等要求。
  • 误区:通配符证书能匹配任意层级子域名。 通常只匹配一级子域名。
  • 误区:有 CN 就不用 SAN。 现代浏览器主要看 SAN,不能依赖 CN 兜底。
  • 追问:为什么根域要单独写进 SAN? *.example.com 不覆盖 example.com 本身。
  • 追问:SAN 和 SNI 有什么区别? SAN 是证书里的名字列表,SNI 是客户端握手时告诉服务端要访问哪个名字。
  • 追问:CDN 证书不匹配怎么排查? 看客户端访问域名、CDN 边缘证书、回源 Host 和源站证书是否一致。

8. 加强记忆

证书域名匹配记成一句链路:访问谁,SNI 报谁,证书 SAN 里必须有谁。

通配符只管一级,根域另写,深层子域另配。