当请求包含用于 mTLS 身份验证 的客户端证书时,Cloudflare 会将证书详细信息作为变量公开到 Ruleset Engine,以及作为 Workers request.cf 对象上的属性。
客户端证书字段可作为 mTLS 字段 在基于 Ruleset Engine 的产品中使用,例如 WAF 自定义规则 和 请求标头修改规则。
这些变量也可通过 Cloudflare Workers 作为 request.cf.tlsClientAuth 对象的一部分使用。完整定义请参阅链接的 Rules 语言字段。
request.cf.tlsClientAuth.certRevoked— 指示 mTLS 客户端是否出示了有效但已吊销的客户端证书。在 Workers 中,这是字符串(已吊销为"1",未吊销为"0"),而不是布尔值。request.cf.tlsClientAuth.certVerified— 指示 mTLS 客户端是否出示了有效的客户端证书。在 Workers 中,这是字符串(有效时为"SUCCESS",未出示时为"NONE"),而不是布尔值。失败时,字符串包含错误原因(例如"FAILED:unable to get local issuer certificate")。request.cf.tlsClientAuth.certPresented— 指示 mTLS 客户端是否出示了证书(无论有效与否)。在 Workers 中,这是字符串(出示证书时为"1",否则为"0"),而不是布尔值。request.cf.tlsClientAuth.certIssuerDN— 签发该 mTLS 客户端证书的证书颁发机构 (CA) 的可分辨名称 (DN)。request.cf.tlsClientAuth.certSubjectDN— mTLS 客户端证书所有者(或请求者)的可分辨名称 (DN)。request.cf.tlsClientAuth.certIssuerDNRFC2253— 签发该 mTLS 客户端证书的证书颁发机构 (CA) 的可分辨名称 (DN),采用 RFC 2253 ↗ 格式。request.cf.tlsClientAuth.certSubjectDNRFC2253— mTLS 客户端证书所有者(或请求者)的可分辨名称 (DN),采用 RFC 2253 ↗ 格式。request.cf.tlsClientAuth.certIssuerDNLegacy— 签发该 mTLS 客户端证书的证书颁发机构 (CA) 的可分辨名称 (DN),采用旧版格式。request.cf.tlsClientAuth.certSubjectDNLegacy— mTLS 客户端证书所有者(或请求者)的可分辨名称 (DN),采用旧版格式。request.cf.tlsClientAuth.certSerial— mTLS 客户端证书的序列号。request.cf.tlsClientAuth.certIssuerSerial— mTLS 客户端证书直接颁发者的序列号。request.cf.tlsClientAuth.certFingerprintSHA256— mTLS 客户端证书的 SHA-256 指纹。request.cf.tlsClientAuth.certFingerprintSHA1— mTLS 客户端证书的 SHA-1 指纹。request.cf.tlsClientAuth.certNotBefore— mTLS 客户端证书在此日期之前无效。request.cf.tlsClientAuth.certNotAfter— mTLS 客户端证书在此日期之后无效。request.cf.tlsClientAuth.certSKI— mTLS 客户端证书的主体密钥标识符 (SKI)。request.cf.tlsClientAuth.certIssuerSKI— mTLS 客户端证书直接颁发者的主体密钥标识符 (SKI)。request.cf.tlsClientAuth.certRFC9440— 以 RFC 9440 ↗ 格式编码的客户端叶证书(DER、Base64 编码、冒号换行)。request.cf.tlsClientAuth.certRFC9440TooLarge— 如果叶证书超过 10 KiB 编码限制并从certRFC9440中省略,则为true。request.cf.tlsClientAuth.certChainRFC9440— 以 RFC 9440 ↗ 格式表示的中间证书链,为逗号分隔列表。request.cf.tlsClientAuth.certChainRFC9440TooLarge— 如果中间证书链超过 16 KiB 编码限制并从certChainRFC9440中省略,则为true。