Estás viendo la documentación de Apigee Edge.
Ir a la
documentación de Apigee X. info
Edge te permite crear hosts virtuales que admiten TLS unidireccional y bidireccional. Con TLS unidireccional, el cliente emite una solicitud de sesión a un host virtual implementado en un router de Edge, y el router responde con un certificado que contiene la clave pública del host virtual. Para un certificado firmado, el cliente puede realizar una solicitud a la autoridad certificadora (AC) para autenticar el certificado.
En la TLS bidireccional, tanto el cliente como Edge pasan certificados que se validan como parte de una solicitud:
- El router de Edge presenta su certificado al cliente de TLS para que se autentique. Luego, el cliente verifica la identidad del servidor antes de enviarle su certificado.
- El cliente de TLS presenta su certificado a Edge para que se autentique.
Consulta Información acerca de los hosts virtuales para obtener más información.
Capturar información de conexión TLS
Durante una solicitud a un proxy de API a través de un host virtual que admite TLS, Edge puede capturar información sobre la conexión TLS. El proxy de API puede acceder a esa información a través de variables de flujo para realizar análisis y validaciones adicionales.
El tipo de información de TLS que captura Edge depende de si el host virtual admite TLS unidireccional o bidireccional. Por ejemplo, para la TLS unidireccional, Edge puede capturar información sobre el algoritmo de cifrado TLS o el protocolo TLS que se usa en la conexión TLS.
En el caso de la TLS bidireccional, Edge puede capturar la misma información que se capturó para la TLS unidireccional, y también capturar la información sobre el certificado del cliente. Por ejemplo, Edge puede capturar la huella digital SHA1 del certificado de cliente y el certificado de cliente en el formato PEM.
Capturar información para TLS unidireccional y bidireccional
En la siguiente tabla, se enumeran las variables de flujo que contienen la información de conexión TLS que capturó
Edge y que están disponibles para el acceso en el proxy de API. Esta información se captura para TLS unidireccional
y bidireccional configurando <ConnectionProperties> como verdadera en la
definición del host virtual:
| Variable de flujo | Descripción |
|---|---|
tls.cipher
|
El algoritmo de cifrado que usa la conexión TLS. |
tls.protocol
|
El protocolo que usa la conexión TLS. |
tls.server.name
|
El nombre del servidor de SNI solicitado. |
tls.session.id
|
El identificador de la sesión. Esta variable de flujo está disponible cuando configuras |
Capturar información adicional de TLS durante la TLS bidireccional
En la siguiente tabla, se enumeran las variables de flujo que contienen detalles del certificado de cliente que capturó Edge
en la TLS bidireccional. Esta información se captura para TLS bidireccional configurando
<ClientProperties> como verdadera en la definición del host virtual:
| Variable de flujo | Descripción |
|---|---|
tls.client.s.dn
|
El nombre distinguido (DN) de la entidad emisora del certificado de cliente. |
tls.client.i.dn
|
El nombre distinguido (DN) de la entidad emisora del certificado de cliente. |
tls.client.raw.cert
|
El certificado de cliente en formato PEM. |
tls.client.cert.serial
|
El número de serie del certificado de cliente. |
tls.client.cert.fingerprint
|
La huella digital SHA1 del certificado de cliente. |
tls.session.id
|
El identificador de la sesión. Esta variable de flujo está disponible cuando configuras
|
Configurar un host virtual para capturar información de TLS
Para configurar el host virtual para capturar información de TLS, establece las siguientes propiedades
en <PropagateTLSInformation> como true.
<ConnectionProperties>: Habilita la captura de información de conexión TLS para TLS unidireccional y bidireccional. El valor predeterminado esfalse.<ClientProperties>: Habilita la captura de información adicional para TLS bidireccional. El valor predeterminado esfalse.
Por ejemplo, la siguiente definición de host virtual usa TLS bidireccional y habilita la captura de ambos tipos de información de 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>Si pasas un cuerpo JSON, establece las propiedades de la siguiente manera:
"propagateTLSInformation" : {
"connectionProperties" : true,
"clientProperties" : true
}Establece límites de tamaño de encabezado
Cuando habilitas la captura de información de TLS en un host virtual, Edge pasa esa información con encabezados HTTP. Por lo tanto, debes asegurarte de que los límites de tamaño del encabezado se establezcan de forma adecuada según si usas Edge para Cloud o Edge para la nube privada:
- Edge para Cloud: Apigee establece los tamaños de encabezado de forma adecuada.
- Edge para la nube privada: La función no está disponible.
Acceder a las variables de flujo en un proxy de API
Desde tu proxy de API, puedes acceder a las variables de flujo de TLS y, luego, inspeccionarlas. Por ejemplo, puedes usar la política AssignMessage para acceder a ellas o acceder a ellas en JavaScript con la política de JavaScript.
También puedes hacer referencia a las variables de flujo en un elemento <Condition> de un proxy o flujo de destino,
o en un <Step> o <RouteRule>. Por ejemplo, puedes enrutar
una solicitud a diferentes destinos según el SN del cliente.
Para obtener más información, consulta lo siguiente: