多域名靠 SNI 分流
一台 WAF 承载多个域名时,靠 TLS 的 SNI 扩展(RFC 6066)在握手阶段获知客户端想访问哪个域名,再选择对应的证书与后端站点。这带来两个必须处理的问题:一是每个域名的证书要配置完整、SAN 覆盖实际使用的所有域名;二是要有缺省证书兜底——不带 SNI 的老客户端或直接用 IP 访问的请求,会走缺省证书,配错就会出现握手失败。上线前把每个域名逐一验证,比上线后逐个接投诉有效得多。
基本信息
| 核心机制 | TLS 握手时通过 SNI 扩展识别客户端请求的域名,据此选择证书与后端 |
|---|---|
| 证书要求 | 每个域名的证书有效、证书链完整、SAN 覆盖实际使用的所有域名 |
| 兜底要求 | 配置缺省证书,承接不带 SNI 的客户端与直接以 IP 访问的请求 |
| 兼容性 | 老旧客户端与服务探针可能不带 SNI,需要单独验证 |
| 运维要求 | 证书到期提醒与轮换流程,避免到期后多域名同时受影响 |
典型使用场景
- 新增业务域名:确认证书已配置且 SAN 覆盖新域名,避免灰色不可用
- 证书轮换:多域名共用设备时逐域名验证新证书生效且链完整
- 健康检查与探针配置:探针若用 IP 直连,需确认缺省证书不导致检查失败
- 多线路或双栈部署:IPv4 与 IPv6 通道分别验证握手成功
- 排查偶发握手失败:确认是否存在不带 SNI 的客户端走了缺省证书
- 合规检查:确认证书类型与有效期符合内部规范,无过期或自签证书对外暴露
上线前检查清单
上线前检查清单
[ ] 每个域名证书有效且证书链完整
[ ] 证书 SAN 覆盖实际使用的全部域名(含子域名)
[ ] 缺省证书已配置,用于承接无 SNI 的请求
[ ] 逐域名测试握手:指定域名访问返回正确证书与站点
[ ] 用 IP 直连测试缺省证书兜底行为
[ ] IPv4 / IPv6 通道分别验证
[ ] 证书到期时间登记提醒,纳入轮换计划检查项读法
| 检查项 | 含义 | 异常后果 |
|---|---|---|
| 证书有效性 | 证书是否在有效期内且未被吊销 | 过期或吊销后浏览器直接告警,业务不可用 |
| SAN 覆盖 | 证书主题备用名称列出的域名 | 域名不在 SAN 中会提示证书与域名不匹配 |
| 证书链完整性 | 中间证书是否一并配置 | 部分客户端握手失败,表现随机且难复现 |
| 缺省证书 | 无 SNI 时的回落证书 | 未配置或缺配导致老客户端与探针失败 |
| 后端对应 | 域名与后端站点的映射关系 | 映射错误时访问到错误站点,变更后才被发现 |
多域名场景最常见的坑是「漏配」:批量上线时个别域名证书或映射缺失,表现是部分用户间歇性访问异常,排查时容易被误认为网络抖动。上线前逐域名握手测试是成本最低的预防手段。