Estás viendo la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Un proxy de API funciona como una asignación de un extremo disponible públicamente al servicio de backend. Un host virtual define la forma en que el proxy de API público se expone a una app. Por ejemplo, el host virtual determina si se puede acceder al proxy de API mediante TLS. Cuando configures un proxy de API, edita su definición de ProxyEndpoint para configurar los hosts virtuales que utiliza.
TargetEndpoint es el equivalente de salida del ProxyEndpoint. Un TargetTarget funciona como un cliente HTTP de Edge a un servicio de backend. Cuando creas un proxy de API, puedes configurarlo para que use cero o más TargetEndpoints.
Obtenga más información:
- Acerca de TLS/SSL
- Usa TLS con Edge
- Acerca de los hosts virtuales
- Almacenes de claves y Truststores
- Referencia de la configuración del proxy de API
Cómo configurar un TargetTarget o TargetServer
Para configurar un TargetEndpoint, edite el objeto XML que define el objeto TargetEndpoint. Para editar el extremo de destino, edita el archivo en formato XML que define el destino en tu proxy de API o edítalo en la IU de administración de Edge.
Si quieres usar la IU de administración de Edge para editar el TargetTarget, sigue estos pasos:
- Acceda a la IU de administración de Edge en https://enterprise.apigee.com.
- Selecciona el nombre del proxy de API que deseas actualizar.
- Selecciona la pestaña Desarrollar.
- En Target Endpoints, seleccione default.
- En el área de código, aparece la definición de TargetEndpoint, que es similar a la que se muestra a continuación:
<TargetEndpoint name="default"> <Description/> <FaultRules/> <Flows/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <HTTPTargetConnection> <Properties/> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://mocktarget.apigee.net</URL> </HTTPTargetConnection> </TargetEndpoint>
- Configura un almacén de confianza como se describe a continuación en Acerca de la configuración de TLS con el backend.
- Realiza los cambios que quieras y guarda el proxy. Si se implementó el proxy de API, cuando se guarda, se vuelve a implementar con la nueva configuración.
Observa que la definición de TargetEndpoint contiene una propiedad name
. Usa el valor de la propiedad name
para configurar la definición de proxy de proxy de una API a fin de usar TargetEndpoint.
Consulta la referencia de configuración del proxy de API para obtener más información.
TargetEndpoints se puede configurar para que haga referencia a un TargetServer, en lugar de la URL de destino explícita. Una configuración de TargetServer desacopla las URLs de extremos concretas de las configuraciones de TargetEndpoint. TargetServers se usa para admitir el balanceo de cargas y la conmutación por error en varias instancias del servidor de backend.
A continuación, se muestra una definición de ejemplo de TargetServer:
<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>
Se hace referencia a un TargetServer por nombre en el elemento <HTTPTargetConnection>
en una definición de TargetEndpoint.
Puedes configurar uno o más servidores de destino con nombre, como se muestra a continuación.
<TargetEndpoint name="default"> ... <HTTPTargetConnection> <LoadBalancer> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> ... </TargetEndpoint>
Consulta Balanceo de cargas entre servidores de backend para obtener más información.
Acerca de la configuración de TLS con el backend
Antes de configurar el acceso de TLS al backend, debes comprender dos puntos importantes:
- De forma predeterminada, Edge no valida el certificado de backend. Debes crear un almacén de confianza para configurar Edge a fin de validar el certificado.
- Usa una referencia para especificar el almacén de claves o el almacén de confianza que usa Edge.
Ambas consideraciones se describen a continuación.
Define un almacén de confianza para habilitar la validación de certificados
Cuando se realiza una solicitud TLS a través de TargetEndpoint o TargetServer, Edge no valida de forma predeterminada el certificado TLS que se recibe del servidor de backend. Esto significa que Edge no valida lo siguiente:
- El certificado tiene la firma de una CA de confianza.
- El certificado no venció.
- El certificado presenta un nombre común. Si hay un nombre común, Edge no valida que este coincida con el nombre de host especificado en la URL.
Para configurar Edge a fin de validar el certificado de backend, debes hacer lo siguiente:
- Crear un almacén de confianza en Edge
- Sube el certificado o la cadena de certificados del servidor al almacén de confianza. Si el certificado del servidor está firmado por un tercero, deberás subir la cadena de certificados completa, incluido el certificado de CA raíz, al almacén de confianza. No hay CA de confianza implícita.
- Agrega el almacén de confianza a la definición de TargetEndpoint o TargetServer.
Consulta Keystores y Truststores para obtener más información.
Por ejemplo:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://myservice.com</URL> </HTTPTargetConnection> … </TargetEndpoint>
Usar una referencia a un almacén de claves o a un almacén de confianza
En el siguiente ejemplo, se muestra cómo configurar un TargetEndpoint o TargetServer para que sea compatible con TLS. Como parte de la configuración de TLS, debes especificar un almacén de confianza y un almacén de claves como parte de una definición de TargetEndpoint o TargetServer.
Apigee recomienda que uses una referencia al almacén de claves y al almacén de confianza en la definición de TargetEndpoints o TargetServer. La ventaja de usar una referencia es que solo debes actualizarla para que apunte a un almacén de claves o almacén de confianza diferente a fin de actualizar el certificado de TLS.
Las referencias a los almacenes de claves y almacén de confianza en la definición de TargetEndpoints o TargetServer funcionan de la misma manera que para los hosts virtuales.
Convierte un TargetEndpoint o TargetServer para usar una referencia
Es posible que tengas definiciones de TargetEndpoint o TargetServer existentes que usen el nombre literal de almacén de claves y almacén de confianza. Si quieres convertir la definición de TargetEndpoint o TargetServer para usar referencias, haz lo siguiente:
- Actualiza la definición de TargetEndpoint o TargetServer para usar una referencia.
- Reinicia los procesadores de mensajes perimetrales:
- Si eres cliente de la nube pública, comunícate con el equipo de asistencia de Apigee Edge para reiniciar los Message Processor.
- Para clientes de nube privada, reinicia los procesadores de mensajes perimetrales uno por uno.
- Confirma que TargetEndpoint o TargetServer funcione correctamente.
Configura TLS unidireccional al servidor de backend
Cuando usas una definición de TargetEndpoint, la configuración del acceso TLS unidireccional desde el cliente de TLS (el cliente de TLS) al servidor de backend (servidor TLS) no requiere ninguna configuración adicional en Edge. La configuración correcta del TLS depende del servidor de backend.
Solo debes asegurarte de que el elemento <URL>
en la definición de TargetEndpoint haga referencia al servicio de backend mediante el protocolo HTTPS y que habilites TLS:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <URL>https://myservice.com</URL> </HTTPTargetConnection> … </TargetEndpoint>
Si usas un TargetServer para definir el servicio de backend, habilita TLS en la definición de TargetServer:
<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
Sin embargo, si deseas que Edge valide el certificado de backend, debes crear un almacén de confianza que contenga el certificado o la cadena de certificados de backend. Luego, debes especificar el almacén de confianza en la definición de TargetEndpoint:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://myservice.com</URL> </HTTPTargetConnection> … </TargetEndpoint>
O en la definición de TargetServer:
<TargetServer name="target1"> <Host>mockserver.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> </TargetServer>
Para configurar la TLS unidireccional, haz lo siguiente:
- Si quieres validar el certificado de backend, crea un almacén de confianza en Edge y sube el certificado de backend o la cadena de CA, como se describe en Almacenes de claves y almacenes de confianza. En este ejemplo, si tienes que crear un almacén de confianza, asígnale el nombre myTrustStore.
-
Si creaste un almacén de confianza, usa la siguiente llamada a la API de POST para crear la referencia denominada myTrustStoreRef al almacén de confianza que creaste antes:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="myTrustStoreRef"> <Refers>myTrustKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
- Usa la IU de administración de Edge a fin de actualizar la definición de TargetEndpoint para el proxy de API (o, si defines el proxy de API en formato XML, edita los archivos en formato XML para el proxy):
- Acceda a la IU de administración de Edge en https://enterprise.apigee.com.
- En el menú de la IU de administración de Edge, selecciona API.
- Selecciona el nombre del proxy de API que deseas actualizar.
- Selecciona la pestaña Desarrollo.
- En Target Endpoints, seleccione default.
- En el área de código, edita el elemento
<HTTPTargetConnection>
para agregar el elemento<SSLInfo>
. Asegúrate de especificar la referencia del almacén de confianza correcta y establece<Enabled>
como verdadero:<TargetEndpoint name="default"> … <HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://myservice.com</URL> </HTTPTargetConnection> … </TargetEndpoint>
- Guarda el proxy de API. Si se implementó el proxy de API, cuando se guarda, se vuelve a implementar con la nueva configuración.
Configura TLS bidireccional en el servidor de backend
Si deseas admitir la TLS bidireccional entre Edge (cliente de TLS) y el servidor de backend (servidor de TLS):
- Crea un almacén de claves en Edge y sube el certificado y la clave privada de Edge.
- Si deseas validar el certificado de backend, crea un almacén de confianza en Edge que contenga el certificado y la cadena de CA que recibiste del servidor de backend.
- Actualiza el TargetEndpoint de cualquier proxy de API que haga referencia al servidor de backend para configurar el acceso TLS.
Usa el alias de la clave para especificar el certificado del almacén de claves
Puedes definir varios certificados, cada uno con su propio alias, en el mismo almacén de claves. De forma predeterminada, Edge usa el primer certificado definido en el almacén de claves.
De manera opcional, puedes configurar Edge para usar el certificado que especifica la propiedad <KeyAlias>
.
Esto te permite definir un solo almacén de claves para varios certificados y, luego, seleccionar el que deseas usar en la definición de TargetServer. Si Edge no puede encontrar un certificado con un alias que coincida con <KeyAlias>
, usa la acción predeterminada de seleccionar el primer certificado del almacén de claves.
Los usuarios de Edge para la nube pública deben comunicarse con el equipo de asistencia de Apigee Edge a fin de habilitar esta función.
Configura TLS bidireccional
Para configurar la TLS bidireccional, haz lo siguiente:
- Crea el almacén de claves en Edge y sube el certificado y la clave privada mediante el procedimiento que se describe a continuación: Almacenes de claves y almacenes de confianza. En este ejemplo, crea un almacén de claves llamado myTestKeystore que use un nombre de alias de myKey para el certificado y la clave privada.
-
Usa la siguiente llamada a la API de POST para crear la referencia myKeyStoreRef en el almacén de claves que creaste anteriormente:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="myKeyStoreRef"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
La referencia especifica el nombre del almacén de claves y el tipo de referencia como
KeyStore
.Usa la siguiente llamada a la API de GET para ver la referencia:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef / -u email:password
- Si quieres validar el certificado de backend, crea un almacén de confianza en Edge y sube el certificado y la cadena de CA, como se describe aquí: Almacenes de claves y almacenes de confianza. Para este ejemplo, si tiene que crear un nombre de almacén de confianza, asígnele el nombre myTrustStore.
-
Si creaste un almacén de confianza, usa la siguiente llamada a la API de POST para crear la referencia denominada myTrustStoreRef al almacén de confianza que creaste antes:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="myTrustStoreRef"> <Refers>myTrustKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
- Usa la IU de administración de Edge a fin de actualizar la definición de TargetEndpoint para el proxy de API (o, si defines el proxy de API en formato XML, edita los archivos en formato XML para el proxy):
- Acceda a la IU de administración de Edge en https://enterprise.apigee.com.
- En el menú de la IU de administración de Edge, selecciona API.
- Selecciona el nombre del proxy de API que deseas actualizar.
- Selecciona la pestaña Desarrollo.
- En Target Endpoints, seleccione default.
- En el área de código, edita el elemento
<HTTPTargetConnection>
para agregar el elemento<SSLInfo>
. Asegúrate de especificar el almacén de claves y el alias de clave correctos, y establece los elementos<Enabled>
y<ClientAuthEnabled>
en verdadero:<TargetEndpoint name="default"> ... <HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeyStoreRef</KeyStore> <KeyAlias>myKey</KeyAlias> </SSLInfo> <URL>https://myservice.com</URL> </HTTPTargetConnection> ... </TargetEndpoint>
- Guarda el proxy de API. Si se implementó el proxy de API, cuando se guarda, se vuelve a implementar con la nueva configuración.
Si deseas obtener más información sobre las opciones disponibles en <TargetEndpoint>
, incluido el uso de variables para proporcionar valores <SSLInfo>
de TargetEndpoint, consulta la referencia de configuración del proxy de API.
Habilitando SNI
Edge admite el uso de indicación de nombre del servidor (SNI) desde los procesadores de mensajes a fin de segmentar extremos en Apigee Edge para implementaciones de nube privada y Cloud.
Para que Edge en la nube privada sea retrocompatible con los backends de destino existentes, Apigee inhabilitó SNI de forma predeterminada. Si el backend de destino está configurado para admitir SNI, puedes habilitar esta función. Consulta Usa SNI con Edge para obtener más información.