摘要

  • SVCB 与 HTTPS 资源记录把候选端点同各自参数绑定,并让发布者给出优先顺序;DNSSEC 可以认证这项发布,却不能证明某个客户端兼容、路径可达、TLS 身份正确或应用请求成功。
  • 真正执行选择的是客户端:它淘汰畸形或不兼容记录,解释必需参数,随机处理同优先级端点,应用代理与地址策略,在允许时回退,并始终验证原始服务身份。

同一份已通过 DNSSEC 验证的 HTTPS RRset,可以在三台设备上形成三种正确结果。手机理解优先级 1 端点要求的参数,通过 IPv6 建立 HTTP/3;办公电脑不认识其中一项 mandatory 键,于是选用优先级 2 的 HTTP/2;另一台设备由命名目标代理负责解析,为避免向额外解析器泄露目的地,干脆禁用 SVCB。

这不是“签名失效”,也不必然是客户端不服从。签名证明区域发布了什么;连接还要经过能力、配置、网络、TLS 与应用五道现实检验。

RFC 9460 把通用 SVCB 定义为资源记录类型 64,把面向 HTTP 的兼容类型 HTTPS 定义为 65。它们的价值,是让客户端在首次连接前就取得替代端点及其连接参数,而不是先走一条次优路径,再从应用响应中获知替代方案。

SvcPriority 为 0 时是 AliasMode:它把某项服务委派给 TargetName。正数则进入 ServiceMode:TargetName 与同一条记录里的 SvcParams 一起描述一个替代端点。关键不在多列了几个字段,而在“绑定”——端口、ALPN、地址提示及其他参数不会因为独立轮转而错误拼接到另一个运营环境。

AliasMode 也不是覆盖整个名称的 CNAME。它只对正在查询的 SVCB 兼容类型生效,不改变其他记录类型,也不会把 TargetName 变成 HTTPS 原点。它能解决 apex 上的服务委派,但不认识这种记录的旧客户端仍需要可用的 A/AAAA 路径。发布记录只是开放采用的可能,不是强迫所有实现同时迁移。

ServiceMode 把更多判断明确留在客户端。编码畸形可能使整个 RRset 被拒绝;参数自相矛盾会使单条记录不可用。未知参数通常可以忽略,唯独列入 mandatory 的键表明:若客户端不理解它,该端点就不能按发布者的功能约束工作。因此这条记录会被视为不兼容,而不是让客户端猜测。

截至 2026 年 6 月 25 日更新的 IANA SVCB 服务参数注册表 显示了扩展速度。基础键包括 mandatory、ALPN、取消默认 ALPN、端口、IPv4/IPv6 提示;后来又登记了 ECH 配置、DoH 路径、OHTTP、TLS 支持组、DNS over CoAP 路径、PvD 配置和名称服务器各传输方式的运营信心值。获得号码和定义,不等于每个客户端已经实现,也不等于它适合所有协议映射。

优先级同样只是有边界的建议。较小的正数表示发布者更偏好该记录;同一个优先级里的记录应由客户端随机打乱,以实现均匀分担,而不是按区域文件顺序或 SRV 权重执行。客户端通常先尝试较高优先级,再向下回退。

RFC 9460 同时允许性能例外:并行尝试多个端点、预取多个 TargetName、优先使用不需要额外 DNS 查询的记录,或复用一条已经开始且与记录相容的连接。由此可见,区域配置能影响选择,却不能单独预测第一条成功连接。

ALPN 把“公布”和“协商”分得很清楚。DNS 参数列出端点提供的协议套件,客户端先按自身能力筛选;随后由 RFC 7301 所定义的 TLS 握手完成协商。区域里出现 h3,并不代表受管浏览器启用了 QUIC、网络放行 UDP,或服务器此刻一定能完成该协议。

ipv4hint 与 ipv6hint 也只是加速提示。若本地已有 A/AAAA,RFC 9460 要求客户端优先采用这些正式地址;否则也应查询 TargetName,并可在答案到达后结束基于提示地址的连接。长期把提示当地址权威,可能绕过地理调度或负载均衡。

拿到地址后,客户端还可按 Happy Eyeballs v2 竞速 IPv6 与 IPv4。哪一族获胜取决于延迟计划与当下路径。发布者给出了候选,真实网络才提供可达性证据。

DNSSEC 加固的是发布层。RFC 9460 没有把 HTTPS RR 设为天然可信;它把 DNS 信道视为可能被攻击者控制,并把签名和验证留作可选能力。若客户端对 A/AAAA 强制验证,也应对 SVCB 采用相同政策,避免伪造绑定绕过地址保护。RFC 4035 定义了这套验证状态。

Secure 结果能说明签名区域确实发布了该 RRset,不能说明端点健康、代理允许访问、客户端理解必需参数或证书有效。把这几项混为一谈,会让密码学符号承担它从未观察过的运行事实。

最重要的不变量是服务身份。RFC 9460 明确指出,别名和 TargetName 不改变原始服务的验证权威;HTTPS 的 TLS SNI、HTTP Host 或 :authority 仍指向原点,而不是替代目标。RFC 9525 进一步确认:使用 SVCB/HTTPS 获取连接信息,并不改变 HTTP 或 DNS over TLS 既有的 PKIX 验证要求。

这意味着把流量交给 CDN,并没有把定义服务身份的权力也交出去。到 TargetName 的 TCP 或 QUIC 握手成功仍不够;对端必须为原始名称提供有效证书,并在应用层交付原始服务。

RFC 7838 的 Alt-Svc 提供了有用对照。Alt-Svc 可以更换连接使用的主机、端口与协议,却不替换原点;客户端仍按自身安全标准选择。HTTPS RR 的区别在于,它通过 DNS 把类似信息提前到首个 HTTP 交互之前,并用 DNS TTL 管理时效,而 Alt-Svc 使用 ma。RFC 9110 所描述的 HTTP 原点与权威语义始终位于这些路由方案之上。

回退把可用性与降级风险绑在一起。对 HTTP 等既有协议,SVCB 通常是可选的:兼容端点失败后,客户端可以尝试较低优先级,最终回到普通连接方式。这有利于分阶段部署,却也可能让 ECH、HTTP/3 或其他隐私属性在失败后消失。Alt-Svc 规范同样警告,替代服务失败可能成为降级基础。哪些只是性能增强,哪些是不能丢失的安全底线,必须由客户端政策明确。

代理场景进一步说明决策为何无法集中在区域里。命名目标代理可能自己解析 A/AAAA;若客户端另找解析器查询 SVCB,可能向额外主体暴露目的地。RFC 9460 因此要求:没有合适私密解析安排时,可选型客户端必须禁用 SVCB,依赖型客户端则应视配置无效。真正使用时,兼容性还要同时覆盖代理,地址选择也会反映代理的网络位置。

RFC 9461 把 SVCB 映射到 DoT、DoH 与 DoQ,说明同一格式不能替代协议语义。每项映射仍需规定哪些键适用、身份如何验证、回退有何风险。通用注册表提供词汇,具体协议才规定句法如何产生连接。

Heng Lu 对运行代码优先、最小初始规范与本地化未来决策以及现实层级的区分,在这里是一套审计顺序:规范定义机制,区域发布建议,解析器传递记录,客户端筛选选项,TLS 验证与协商,应用请求才证明真实效果。

因此,审计不能停在一次类型 65 查询。它应把 RRset 与 DNSSEC 状态、客户端版本、识别的键、代理模式、所选记录、地址尝试、ALPN、证书身份、回退原因和最终响应串成一条证据链。发布者能证明自己提供了什么;只有运行中的客户端能证明哪一个选项成为安全连接。