通配符证书的匹配规则
通配符证书以 *.example.com 的形式覆盖同一级的所有子域:它匹配 www.example.com 与 api.example.com,但不匹配裸域 example.com,也不匹配 a.b.example.com 这类多级子域。一张证书覆盖大量子域在运维上很省事,代价是私钥泄露的影响面被放大到全部子域,因此私钥的保护等级与访问审计要求更高。
基本信息
| 覆盖范围 | 仅单层标签:*.example.com 匹配 www.example.com |
|---|---|
| 不覆盖 | 裸域 example.com 与多级子域 a.b.example.com |
| 申请要求 | 部分 CA 对通配符要求 DNS 验证或更严格的核验 |
| 运维提示 | 证书泄露影响全部子域,私钥保护与暴露面控制更关键 |
| 常见做法 | 同一张证书的 SAN 中同时列入 DNS:example.com |
匹配对照
| 证书名 | 访问域名 | 结果 |
|---|---|---|
| *.example.com | www.example.com | 匹配 |
| *.example.com | example.com | 不匹配,需在 SAN 中单独列出 |
| *.example.com | a.b.example.com | 不匹配,属于多级子域 |
| *.example.com | example.com.cn | 不匹配,属于另一个域名 |
典型使用场景
- 多子域统一对外:省掉逐张签发与续期的工作量
- 环境隔离规划:为开发测试环境单独申请证书,不与生产共用
- 排查域名不匹配:确认报错域名是裸域还是多级子域
- 安全评审:检查通配符私钥的存放位置、分发范围与访问审计
查看 SAN 中的通配符
查看 SAN 中的通配符
# 查看证书绑定的全部名称,确认是否包含裸域
openssl x509 -in wildcard.crt -noout -ext subjectAltName
# 实测某个域名是否被当前证书覆盖
echo | openssl s_client -connect example.com:443 -servername sub.example.com 2>/dev/null | openssl x509 -noout -subject -dates把裸域也加入同一张证书的 SAN(DNS:example.com)是常见做法,否则访问根域名会报名称不匹配。
通配符与团队边界的关系:如果不同业务线各自管理子域,共用一张通配符证书意味着每个团队都能拿到覆盖其它子域的私钥材料,必要时按业务拆分成多张证书。
各客户端对通配符的宽松程度不同:多数实现只允许最左侧标签为通配符,形如 *.*.example.com 的多通配符通常直接被拒绝,规划时以最保守的客户端为准。