访问 API 代理中的 TLS 连接信息

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

本主题介绍如何访问在 Apigee 或 Apigee Hybrid 上运行的 API 代理的流变量中的 TLS 连接信息。

捕获 TLS 连接信息

在向 API 代理发出请求期间,Apigee 可以捕获有关 TLS 连接的信息。然后,您的 API 代理可以通过流变量访问该信息,以执行其他分析和验证。

Apigee 捕获的 TLS 信息类型取决于 Ingress 是否配置为支持单向或双向 TLS(仅适用于 Apigee Hybrid)。例如,对于单向 TLS,Apigee 可以捕获有关 TLS 连接中使用的 TLS 加密或 TLS 协议的信息。

对于双向 TLS,Apigee 可以捕获与单向 TLS 捕获相同的所有信息,还可以捕获有关客户端证书的证书。例如,Apigee 可以捕获 PEM 格式的客户端证书和客户端证书的 SHA1 指纹。

捕获单向和双向 TLS 的信息

下表列出了包含 Apigee 和 Apigee Hybrid 捕获的 TLS 连接信息的流变量,并可供在 API 代理中访问。

流变量 说明
tls.cipher TLS 连接使用的加密。
tls.protocol TLS 连接使用的协议。
tls.server.name 所请求的 SNI 服务器名称。
tls.session.id 会话标识符。

在双向 TLS 期间捕获其他 TLS 信息

下表列出了包含 Apigee Hybrid 在双向 TLS 中捕获的客户端证书详细信息的流变量:

流变量 说明
tls.client.s.dn 客户端证书的主题标识名 (DN)。
tls.client.i.dn 客户端证书的颁发者标识 (DN)。
tls.client.raw.cert PEM 格式的客户端证书。
tls.client.cert.serial 客户端证书的序列号。
tls.client.cert.fingerprint 客户端证书的 SHA1 指纹。
tls.session.id 会话标识符。

配置 Apigee Hybrid 以启用双向 TLS

如需将 Ingress 配置为请求客户端证书,请将以下详细信息添加到替换文件中:

virtualhosts:
  - name: internal
    minTLSProtocolVersion: "1.2" #optional
    maxTLSProtocolVersion: "1.2" #optional
    tlsMode: MUTUAL
    sslSecret: tls-certificates

另请参阅在 Istio Ingress 上配置 TLS 和 mTLS

访问 API 代理中的流变量

在 API 代理中,您可以访问和检查 TLS 流变量。例如,您可以使用 AssignMessageJavaScript 政策访问它们。

您还可以在代理或目标流的 <Condition> 元素中或在 <Step><RouteRule> 中引用流变量。例如,您可以根据客户端的 SN 将请求路由到不同的目标。

如需了解详情,请参阅: