摘要
- 2026 年 9 月 5 日的
draft-cel-nfsv4-rpc-tls-othername-04提议在 X.509subjectAltName的otherName中携带一个 RPC 用户身份;它仍是个人 Internet-Draft,不是 RFC、IETF 共识或部署报告。 - 启用“身份压平”的服务器会用证书身份替换 AUTH_NONE/AUTH_SYS 请求头身份;如果解析、映射或授权失败,必须拒绝,不能退回请求头。
- 不支持该草案或关闭功能的服务器会忽略同一字段,继续按普通 RPC 凭据处理。客户端分不清这两种情况,因此签发证书不等于限制已经执行。
设想一台备份服务被发了一张只允许以固定账户工作的证书。它访问第一台存储节点时,头部即使填了别的 UID,请求仍被压到证书指定的账户。切到第二台旧节点后,TLS 仍然认证成功,但证书中的新 OID 没人认识,服务器又开始相信头部提交的 UID。
密码学没有突然失效。失效的是人们对执行面的想象。
草案第 04 版要补上 RFC 9289 有意留下的一条缝:RPC-over-TLS 能保护传输并认证通信对端,却不改变 RPC 用户认证。草案让客户端证书携带一个 RPC 用户,服务器在 TLS 会话建立时解析、映射、授权,再把结果绑定到整个会话。
它定义三种身份。RPCAuthSys 直接带 UID 和 GID;GSSExportedName 使用 GSS-API 导出名,RFC 4121给出了 Kerberos 机制的编码背景;NFSv4Principal 使用 RFC 8881 的 user@domain,交给 NFSv4 owner mapping 解析。
三种形式并不是三份备份答案。数字 UID 依赖两端一致的账户与组库,GSS 名依赖服务器真正支持的机制,user@domain 依赖本地域和 owner 映射。一个 SAN 里若同时出现两个压平身份,服务器必须拒绝证书,因为“可任选其一”本身就是权限歧义。
证书只能提出限制,服务器才把它变成事实
执行型服务器的链条很长。它先按 RFC 5280 与 RPC-over-TLS 规则验证证书,再解析唯一身份,映射成本地用户,并判断这个 TLS 对端是否有权使用该用户。授权可能依赖证书主体 ACL、UID/GID 范围、组成员关系、域名模式或 GSS 机制政策。
成功后,结果进入 TLS 会话状态。该会话上的 AUTH_NONE 与 AUTH_SYS 请求,不再按 RFC 5531 头部自报身份执行,而统一使用证书导出的用户。RPCSEC_GSS 是明确例外:RFC 2203 的安全上下文已经证明自己的主体,草案不会覆盖它。
失败路径比成功路径更重要。证书身份只要格式错误、无法映射或未获授权,非 NULL 的 AUTH_NONE/AUTH_SYS 过程就应收到 AUTH_TOOWEAK。服务器绝不能悄悄回退到头部凭据,否则证书原本要堵住的权限正从回退路径回来。
但旧软件不受新规则约束。草案要求 SAN 非 critical,并把新含义放进 otherName 的 type-id。旧服务器可以认识 SAN 这个扩展,却不认识里面的新 OID,于是忽略它并按原有策略处理请求头。已经装有功能但关闭执行的服务器也这样做;客户端无法分辨自己面对的是“不会”还是“不做”。
这是互操作选择,不是证书签名错误。若把整个 SAN 设为 critical,旧系统可能连其他正常名称也一起拒绝;草案选择让混合环境继续连通,代价则是:证书里的最小权限不是可携带的执行证明。
清单不能只列证书
真实控制面是一组联接:证书配置、签发用途、信任锚、节点版本、功能开关、执行范围、身份映射、RPC flavor 与当前 TLS 会话。草案允许服务器按全局、export 或其他本地单元决定是否执行,所以“产品支持”这一个布尔值也不够。
负载均衡或任何形式的会话迁移,会把差异放大。连续两次连接可能拿到不同节点;同一证书第一次被压到固定用户,第二次却恢复头部身份。可用性指标全部正常,也不能证明权限语义一致。
有效期和撤销同样只是链条的一段。这类证书一旦生效会授予用户级资源访问,因此 CRL/OCSP 传播速度很重要,草案还建议把身份压平证书与普通 TLS 对端证书使用的信任锚分开。但“撤销是新的”不证明 OID 被解析,“解析成功”也不证明 UID 或组映射正确。
草案记录了一项由贡献者报告的 FreeBSD user@domain 实现,并标为完成;同一节也明确说这不是 IETF 背书、没有独立核验、不是产品目录,而且没有实施经验可报告。RFC 7942 鼓励公开 running code 以帮助标准判断,但公开说明不能替代生产清单。
这正是 Heng Lu 关于现实层级的说明要求保留的边界:签名字段、服务器判断、文件权限与最终资源效果不是同一件事。Running-Code Primacy 把证据重心放回实际执行的二进制;最小初始规范可以规定共同起点,却不能假装发布已经完成部署。
因此,审计问题应改成:哪一个服务节点证明它在这一条会话上采用了证书身份,并拒绝了请求头里的另一种答案?
来源
- https://datatracker.ietf.org/doc/draft-cel-nfsv4-rpc-tls-othername/
- https://mailarchive.ietf.org/arch/msg/i-d-announce/-CpdFPmD0VmR6kcSB77b3eIvOxo/
- https://www.ietf.org/archive/id/draft-cel-nfsv4-rpc-tls-othername-04.html
- https://www.rfc-editor.org/rfc/rfc2203.html
- https://www.rfc-editor.org/rfc/rfc4121.html
- https://www.rfc-editor.org/rfc/rfc5280.html
- https://www.rfc-editor.org/rfc/rfc5531.html
- https://www.rfc-editor.org/rfc/rfc7942.html
- https://www.rfc-editor.org/rfc/rfc8881.html
- https://www.rfc-editor.org/rfc/rfc9289.html
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
