通配符的覆盖范围
通配符证书只匹配同一级子域,既不匹配多级子域,也不默认包含裸域。签发前必须明确覆盖范围,或把缺失名称加入名称扩展,否则会在上线后才暴露不匹配。另外通配符降低了管理成本,同时也放大影响面:一张证书的私钥泄露会影响其覆盖的全部子域,因此需要更严格的私钥保护与更短的轮换周期。
基本信息
| 匹配 | a.example.com 匹配 *.example.com |
|---|---|
| 不匹配 | a.b.example.com 与裸域,除非单独列出 |
| 策略权衡 | 减少管理成本,影响面随子域数量扩大 |
| 核对方式 | 查看名称扩展并做主机名验证 |
典型使用场景
- 规划证书范围:确认是否真的需要通配符
- 上线后报名称不匹配:核对实际覆盖范围
- 多级子域场景:评估是否改用多名称证书
- 裸域与子域同时使用时的方案选择
- 安全评估:测算通配符私钥泄露的影响面
核对覆盖范围并验证
核对覆盖范围并验证
openssl x509 -in wildcard.pem -noout -ext subjectAltName # 只看名称扩展
openssl verify -CAfile ca.pem -verify_hostname a.example.com wildcard.pem # 应通过
openssl verify -CAfile ca.pem -verify_hostname a.b.example.com wildcard.pem # 预期失败
openssl x509 -in wildcard.pem -noout -subject -issuer # 确认主体与签发者匹配规则
| 访问名称 | 是否匹配 | 说明 |
|---|---|---|
| a.example.com | 是 | 同一级子域 |
| a.b.example.com | 否 | 跨级不匹配 |
| example.com | 否 | 裸域需单独列出 |
| www.example.com | 是 | 仍属同一级 |
通配符私钥泄露会影响其覆盖的全部子域,应配套更严格的私钥保护与更短的轮换周期,必要时按业务拆分证书。
落地建议
- 签发前用脚本校验每个实际访问名称是否被覆盖
- 把裸域与关键子域单独列入名称扩展
- 为通配符证书设定更短的轮换周期
- 私钥只部署在需要的节点上,避免全量分发
单层通配符无法覆盖多级形式;若确实存在多级子域,可选方案是多名称证书或额外申请一张通配符证书,而不是在客户端放宽校验。
排查顺序
- 先用验证命令确认目标名称是否被证书覆盖
- 再看客户端报错是名称不匹配还是链不完整
- 核对是否有更上层的证书终止了连接并返回了另一张证书
- 确认域名解析是否指向了预期的那台服务
同一台服务上多个站点共用端口时,先由服务端按请求的名称选择证书;证书覆盖范围与虚拟主机配置不一致时,返回的证书可能来自另一个站点。