2.4. Processing Rules (处理规则)
2.4. Processing Rules (处理规则)
本节概述了TTRP的适用处理规则, TTRP已协商相互认证的TLS连接以将该连接的客户端证书传递给后端源服务器。此技术将用作配置或部署选项, 本文描述的处理规则适用于启用该选项的服务器。
TTRP与客户端协商使用相互认证的TLS连接, 如[TLS]或[TLS1.2]中所述, 并根据其策略和受信任的证书颁发机构验证客户端证书。底层TLS连接上的每个HTTP请求都会通过以下修改分派到源服务器:
-
客户端证书被放置在分派请求的Client-Cert头字段中, 如第2.2节所述。
-
如果这样配置, 客户端证书的验证链将被放置在请求的Client-Cert-Chain头字段中, 如第2.3节所述。
-
原始传入请求中任何出现的Client-Cert或Client-Cert-Chain头字段必须在转发请求之前被删除或覆盖。具有Client-Cert或Client-Cert-Chain头字段的传入请求可以使用HTTP 400响应拒绝。
对于通过未协商客户端证书认证的TLS连接向TTRP发出的请求, 必须通过在将请求分派到后端服务器之前删除所有Client-Cert和Client-Cert-Chain头字段的出现来进行清理。
然后, 后端源服务器可以使用请求的Client-Cert头字段来确定从客户端到TTRP的连接是否经过相互认证, 如果是, 则确定客户端因此提供的证书。基于客户端证书 (或缺少证书) 的访问控制决策可以通过适当选择响应内容或使用HTTP 403响应来传达, 如果证书被认为在给定上下文中不可接受。请注意, 依赖TLS层错误指示来处理不可接受证书的TLS客户端将不会收到这些信号。
当Client-Cert请求头字段的值用于选择响应时 (例如, 响应内容受访问控制), 响应必须不可缓存 (例如, 通过发送Cache-Control: no-store) 或被指定为仅对具有相同Client-Cert头字段值的后续请求有选择地重用, 通过发送Vary: Client-Cert响应头。如果TTRP遇到Vary头字段 ([HTTP]的第12.5.5节) 中包含Client-Cert或Client-Cert-Chain的响应, 它应该通过将Vary响应头字段的值转换为*来阻止用户代理缓存响应。
正向代理和其他中介绝对不能向请求添加Client-Cert或Client-Cert-Chain头字段, 或修改现有的Client-Cert或Client-Cert-Chain头字段。同样, 客户端绝对不能在请求中使用Client-Cert或Client-Cert-Chain头字段。