同一台源站部署多个网站时,接入CDN后可能返回默认站点、证书名称不匹配,或出现421。排查这类问题,需要把“连接哪里”和“请求哪个站点”分开。回源地址、TLS SNI、证书校验名称以及HTTP Host并不是同一个配置项,平台也未必让它们同时修改。

先区分四个名称
| 字段 | 负责的事情 | 需要的证据 |
|---|---|---|
| 回源地址与端口 | 决定建立网络连接的目标 | 实际连接地址、端口与解析结果 |
| TLS SNI | 在握手阶段声明目标服务器名称 | 握手携带名称与返回证书 |
| 证书校验名称 | 判断源站证书是否匹配预期身份 | 证书名称、信任链与校验结果 |
| HTTP Host或:authority | 在HTTP层标识目标站点 | 虚拟主机匹配结果及访问日志 |
RFC 6066定义了TLS的服务器名称扩展。它发生在HTTP请求处理之前,因此仅修改HTTP Host通常不能解决握手阶段选错证书的问题。证书通配范围、信任链和名称匹配也要一起检查。
用一条请求链路表替代反复猜配置
记录访客域名、CDN回源地址、源站监听端口、SNI、证书校验名称及Host。然后明确源站准备如何接收它们。最容易维护的情况是名称关系一致;业务确需不同名称时,应在代理和源站配置中明确支持,而不能假设所有服务端都允许任意组合。
以自建NGINX代理为例,proxy_ssl_name涉及上游HTTPS服务器名称和校验;SNI发送开关与Host请求头另有配置项。这里是在说明字段职责,不代表WAF.PRO控制台使用相同选项或默认值。
定位时一次只改变一个变量
先在已经授权访问的测试环境,使用源站证书对应的名称发起HTTPS请求,保存握手结果、响应状态和源站日志。再核对CDN实际使用的回源名称。比较时保持路径、请求方法与认证条件一致,避免把业务鉴权失败误认为TLS问题。
下面是未执行的命令示例,域名与IP均为占位符,需替换为自己有权测试的环境:
curl --resolve origin.example.com:443:192.0.2.10 https://origin.example.com/healthz --verbose
curl的–resolve可为指定主机和端口提供连接地址,同时保留URL中的名称语义。不要加入跳过证书校验的参数来宣布“问题已修复”。如果正常链路要求另一个Host,应先确认源站允许该映射,再做独立对照;不要直接照搬到生产配置。
421意味着什么,不能只凭状态码定因
RFC 9110将421定义为请求被定向到无法或不愿为该目标提供权威响应的服务端。目标名称与连接上下文不匹配是检查方向,但状态码本身不能证明只有SNI一种原因。应保留返回该状态的层级、连接是否复用、目标站点配置和对应日志。
若只有复用连接的请求出错,需进一步核对代理或服务端的连接使用方式。若所有请求都返回错误证书,则先解决证书选择与验证;若证书正常但内容来自默认站点,重点检查HTTP层的站点映射。
修复后留下哪些结果
至少验证目标站点、另一同机站点和一个不应被接受的名称,确认既没有串站,也没有把错误名称全部放行。保留成功请求的证书校验、响应正文特征与请求标识。证书更新后仍应重复关键用例,可结合TLS自动化验收清单维护。提交SCDN接入问题时带上四个字段的脱敏对照,能明显缩小定位范围。
资料核对日期:2026年10月30日。本文由AI辅助整理,并依据文内原始资料核对;示例与建议流程不代表已执行的客户测试。产品配置和软件维护状态请以实施时的官方资料为准。
涉及漏洞与安全事件的文章,请结合文中来源、发布时间和厂商最新公告核对。产品配置与防护效果以实际业务验证为准;资料纠错可联系 support@waf.pro。
