📘
HTTPS 是否生效,完全取决于:
浏览器访问的"域名"是否与证书中声明的"域名"完全匹配。
换句话说:
HTTPS 的根本规则就是:域名要对得上。
而"对得上"又分三种方式:
- 精确匹配
- wildcard 匹配(通配符证书)
- 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.comb.example.comanything.example.com
❌ 不能匹配:
example.com(根域不能匹配)a.b.example.com(多级不行)v1.api.example.com(不是它这一层的)*.*.example.com(非法格式)
Wildcard 的三大核心限制(非常重要)
-
只能有一个 * 号,且只能放在最左端:
*.example.com ✔ *.*.example.com ❌ api.*.example.com ❌ *.a.example.com ❌ -
只能匹配"一层子域"
*.example.com 只能匹配 a.example.com -
不能"向上"匹配父域
*.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 条原则)
- 证书必须与域名一一对应才能通过 HTTPS 校验。
- Wildcard 只能匹配一层子域,不支持递归。
- *Wildcard 只能有一个 ,且必须在最左侧。
*.*.api.example.com永远不合法,不会被任何 CA 签发。- 没有所谓"多级证书",只能用 SAN 或更深层的 wildcard。
- 多级域名想全部覆盖,最安全也是最常用的是 SAN。
- "父域"与"子域"在证书上没有继承关系,各自必须独立声明。