<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,Edge 可以捕获有关 TLS 连接中使用的 TLS 加密或 TLS 协议的信息。
对于双向 TLS,Edge 可以捕获单向 TLS 捕获的所有信息, 并捕获有关客户端证书的信息例如,Edge 可以捕获 PEM 格式的客户端证书和客户端证书的 SHA1 指纹。
为二者拍摄信息 单向 TLS 和双向 TLS
下表列出了包含捕获的 TLS 连接信息的流变量
可在 API 代理中访问。通过在虚拟主机定义中将 <ConnectionProperties>
设置为 true,即可为单向和双向 TLS 捕获此类信息:
流变量 | 说明 |
---|---|
tls.cipher
|
TLS 连接使用的加密。 |
tls.protocol
|
TLS 连接使用的协议。 |
tls.server.name
|
所请求的 SNI 服务器名称。 |
tls.session.id
|
会话标识符。 当您设置 |
在双向 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
|
会话标识符。 当您将 |
配置虚拟主机以捕获 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:
- 适用于云的 Edge:Apigee 会适当地设置标头大小。
- 适用于私有云的 Edge:功能不可用。
访问 API 代理中的流变量
在 API 代理中,您可以访问和检查 TLS 流变量。 例如,您可以使用 AssignMessage 政策访问它们,也可以使用 JavaScript 政策在 JavaScript 中访问它们。
您还可以在代理或目标流的 <Condition>
元素中或在 <Step>
或 <RouteRule>
中引用流变量。例如,您可以根据客户端的 SN 将请求路由到不同的目标。
如需了解详情,请参阅: