【Web】证书(SSL/TLS)与域名之间的关系:完整、通俗、可落地的讲解

📘

HTTPS 是否生效,完全取决于:

浏览器访问的"域名"是否与证书中声明的"域名"完全匹配。

换句话说:

HTTPS 的根本规则就是:域名要对得上。

而"对得上"又分三种方式:

  1. 精确匹配
  2. wildcard 匹配(通配符证书)
  3. SAN(多域名证书)匹配

这三种方式决定了:

  • 证书能覆盖哪些域名?
  • 能否支持多级域名?
  • *.example.com 的能力到底有限在哪里?
  • 为什么 *.*.api.example.com 不合法?
  • 为什么实际业务经常用 SAN?

以下按照"是什么 → 为什么 → 怎么做 → 实战规则"结构逐点说明。


一、证书绑定域名:是什么?

HTTPS 证书(SSL/TLS Certificate)中包含:"哪些域名是合法的"。

证书可以绑定两类域名字段:

① Common Name(CN)

早期使用,现在只是兼容项。

通常 CN 会填写主要域名:

复制代码
api.example.com

② SAN(Subject Alternative Name)

🚀 现代浏览器真正用来匹配的就是 SAN 列表。

一个证书可以绑定多个域名:

复制代码
api.example.com
www.example.com
v1.api.example.com

只要域名在 SAN 列表里,证书就合法。


二、证书为什么需要和域名匹配?

HTTPS 的目标是:

保证你访问的网站,真的是它自己声称的域名,而不是假冒的服务器。

因此:

  • api.example.com 就必须用能证明自己确实是 api.example.com 的证书
  • a.api.example.com 是另一个域,不能自动使用它父域的证书
  • 安全性要求高于便利性

这也是为什么"通配符有限制"的核心原因:

为了防止一个证书被滥用到大量不该访问的域名上。


三、证书如何匹配域名?(三种方式)

① 精确匹配(最严格、最安全)

证书写的是:

复制代码
api.example.com

浏览器访问:

  • api.example.com
  • www.example.com
  • v1.api.example.com
  • example.com

精确匹配最安全,但扩展性差。


② wildcard 匹配(通配符证书)

写法如下:

复制代码
*.example.com

这是浏览器和 CA 都支持的,但能力有限:

✔ 能匹配:

  • a.example.com
  • b.example.com
  • anything.example.com

❌ 不能匹配:

  • example.com(根域不能匹配)
  • a.b.example.com(多级不行)
  • v1.api.example.com(不是它这一层的)
  • *.*.example.com(非法格式)

Wildcard 的三大核心限制(非常重要)

  1. 只能有一个 * 号,且只能放在最左端:

    复制代码
    *.example.com ✔
    *.*.example.com ❌
    api.*.example.com ❌
    *.a.example.com ❌
  2. 只能匹配"一层子域"

    复制代码
    *.example.com 只能匹配 a.example.com
  3. 不能"向上"匹配父域

    复制代码
    *.example.com 不能匹配 example.com

这些限制都是为了防止安全风险。


③ SAN 多域证书(最灵活、企业最常用)

可写多个完全不同层级的域名:

复制代码
example.com
www.example.com
api.example.com
v1.api.example.com
admin.v1.api.example.com

特点:

  • ✔ 可以覆盖任意层级
  • ✔ 可以混合不同子域
  • ✔ 可把所有服务整合到一个证书里
  • ✘ 价格较高

适用于:

  • 微服务多域结构
  • 多层 API 域名
  • SaaS 平台大量子域

四、多级域名证书匹配:关键结论

❗ 结论 1:没有所谓"五级证书""六级证书"

证书体系只有三种:

  • 单域名
  • wildcard(一层子域)
  • SAN(多个具体域名)

域名层级多少不重要,重要的是:

"浏览器访问的域名是否在证书允许的范围内"。


❗ 结论 2:通配符不能用在多层

很多人想写:

复制代码
*.*.api.example.com

但这是非法的。

原因:

  • 不符合 RFC / CA/B Forum 标准
  • 通配符只能使用一次
  • 通配符只能在最左端标签
  • 通配符不能匹配多层域

所以:

你想覆盖五级域名:

复制代码
a.b.c.api.example.com

那么能做的只有:

✔ 单独写入 SAN

或者

✔ 在更深一层使用通配符,例如:

复制代码
*.c.api.example.com         → 覆盖所有 [任意].c.api.example.com
*.b.c.api.example.com       → 覆盖所有 [任意].b.c.api.example.com

但每一个 wildcard 仍然只能覆盖"一层"。


❗ 结论 3:Wildcard 不会递归匹配

复制代码
*.example.com

不能覆盖:

这是浏览器强制要求的,不是某家 CA 的限制。


五、如何为你的多级域名正确配置证书?(最实用)

假设你的域名结构如下:

复制代码
example.com
www.example.com
api.example.com
v1.api.example.com
admin.v1.api.example.com
inner.admin.v1.api.example.com

如果你的业务结构是:

  • 子域很多
  • 层级不固定
  • 通配符无法覆盖多层

👉 最佳方案:SAN 证书

把需要的域名全写进去。


如果你的业务只有"一层子域"

复制代码
a.example.com
b.example.com
c.example.com

👉 用:

复制代码
*.example.com

即可。


如果你的业务包含"多层、但同层很多"

例如:

复制代码
xxx.api.example.com
yyy.api.example.com
zzz.api.example.com

👉 用:

复制代码
*.api.example.com

刚刚好。


六、总结(最重要的 7 条原则)

  1. 证书必须与域名一一对应才能通过 HTTPS 校验。
  2. Wildcard 只能匹配一层子域,不支持递归。
  3. *Wildcard 只能有一个 ,且必须在最左侧。
  4. *.*.api.example.com 永远不合法,不会被任何 CA 签发。
  5. 没有所谓"多级证书",只能用 SAN 或更深层的 wildcard。
  6. 多级域名想全部覆盖,最安全也是最常用的是 SAN。
  7. "父域"与"子域"在证书上没有继承关系,各自必须独立声明。
相关推荐
lbh21 小时前
当我开始像写代码一样和AI对话,一切都变了
前端·openai·ai编程
以太浮标21 小时前
华为eNSP模拟器综合实验之- ACL控制列表核心命令全解析及场景应用
运维·网络·网络协议·华为·信息与通信
yosh'joy!!21 小时前
IT/OT接口规范
网络协议·接口·modbus tcp·modbus rtu
We་ct1 天前
LeetCode 918. 环形子数组的最大和:两种解法详解
前端·数据结构·算法·leetcode·typescript·动态规划·取反
wefly20171 天前
m3u8live.cn 在线M3U8播放器,免安装高效验流排错
前端·后端·python·音视频·前端开发工具
C澒1 天前
微前端容器标准化 —— 公共能力篇:通用打印
前端·架构
德育处主任Pro1 天前
前端元素转图片,dom-to-image-more入门教程
前端·javascript·vue.js
木斯佳1 天前
前端八股文面经大全:小红书前端一二面OC(下)·(2026-03-17)·面经深度解析
前端·vue3·proxy·八股·响应式
陈天伟教授1 天前
人工智能应用- 预测新冠病毒传染性:04. 中国:强力措施遏制疫情
前端·人工智能·安全·xss·csrf
zayzy1 天前
前端八股总结
开发语言·前端·javascript