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

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

借助 Edge,您可以创建支持单向 TLS 和双向 TLS 的虚拟主机。使用单向 TLS 客户端向部署在边缘路由器和路由器上的虚拟主机发出会话请求。 以包含虚拟主机公钥的证书进行响应。对于已签名的证书,客户端 接着可向证书授权机构 (CA) 发出请求,对证书进行身份验证。

在双向 TLS 中,客户端和边缘都会传递作为请求的一部分进行验证的证书:

  • 边缘路由器会向 TLS 客户端提供其证书以进行身份验证。客户 则先验证服务器的身份,然后再将其证书发送到服务器。
  • TLS 客户端将其证书提交给 Edge 以进行身份验证。

如需了解详情,请参阅关于虚拟主机

捕获 TLS 连接信息

在通过支持 TLS 的虚拟主机向 API 代理发出请求时,Edge 可以捕获 TLS 连接的相关信息。然后,您的 API 代理就可以 流变量以进行其他分析和验证。

Edge 捕获的 TLS 信息类型取决于虚拟主机是否支持 单向 TLS 还是双向 TLS。例如,对于单向 TLS,Edge 可以捕获 TLS 连接中使用的 TLS 加密方式或 TLS 协议。

对于双向 TLS,Edge 可以捕获单向 TLS 捕获的所有信息, 并捕获有关客户端证书的信息例如,Edge 可以捕获 SHA1 指纹 PEM 格式的客户端证书和客户端证书文件。

为二者拍摄信息 单向 TLS 和双向 TLS

下表列出了包含捕获的 TLS 连接信息的流变量 可在 API 代理中访问。系统会同时为单行道和单程的 以及将 <ConnectionProperties> 设为 true 来启用双向 TLS 虚拟主机定义:

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

会话标识符。

当您设置 <ConnectionProperties> 时,此数据流变量可用 或 <ClientProperties> 或 true。

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

下表列出了包含 Edge 捕获的客户端证书详细信息的流变量 双向传输层安全协议 (TLS)。通过设置 在虚拟主机定义中将 <ClientProperties> 设为 true:

流变量 说明
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

会话标识符。

当您设置 <ConnectionProperties><ClientProperties> 设为 true。

配置虚拟主机以捕获 TLS 信息

如需配置虚拟主机以捕获 TLS 信息,请设置以下属性 将金额低于 <PropagateTLSInformation> 更改为 true

  • <ConnectionProperties>:允许捕获 TLS 连接信息 适用于单向和双向 TLS默认值为 false
  • <ClientProperties>:允许捕获其他信息 适用于双向 TLS默认值为 false

例如,以下虚拟主机定义使用双向 TLS 并启用了 以下两类 TLS 信息:

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

如果您要传递 JSON 正文,请将属性设置为:

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

设置标头大小限制

在虚拟主机上启用 TLS 信息捕获功能后,Edge 会将该信息传递 使用 HTTP 标头因此,您必须确保正确设置标头大小限制。 取决于您使用的是适用于云端的 Edge 还是适用于私有云的 Edge:

  • 适用于 Cloud 的 Edge:Apigee 会适当设置标头大小。
  • 适用于私有云的 Edge:功能不可用。

访问 API 代理中的流变量

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

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

如需了解详情,请参阅: