Configura TLS desde Edge hasta el backend (nube y nube privada)

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Un proxy de API funciona como la asignación de un extremo disponible de forma pública a tu servicio de backend. Un host virtual define la forma en que el proxy de API orientado al público se expone a una app. Para ejemplo, el host virtual determina si se puede acceder al proxy de API con TLS. Cuando configurar un proxy de API, editar su definición de ProxyEndpoint para configurar los hosts virtuales que que la API usa.

El TargetEndpoint es el equivalente de salida de ProxyEndpoint. Funciones de TargetEndpoint como un cliente HTTP desde el perímetro hasta un servicio de backend. Cuando creas un proxy de API, puedes configurar que use cero o más TargetEndpoints.

Obtenga más información:

Configurar un TargetEndpoint o TargetServer

Para configurar un TargetEndpoint, edita el objeto XML que define el TargetEndpoint. Puedes Para editar el TargetEndpoint, edita el archivo en formato XML que define el TargetEndpoint en tu proxy de API o editarlo en la IU de administración perimetral.

Si quieres usar la IU de administración de perímetro para editar el TargetEndpoint, haz lo siguiente:

  1. Accede a la IU de la administración de Edge en https://enterprise.apigee.com.
  2. Selecciona el nombre del proxy de API que deseas actualizar.
  3. Selecciona la pestaña Desarrollar.
  4. En Destinos extremos, selecciona predeterminada.
  5. En el área de código, aparece la definición de TargetEndpoint, 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>
  6. Configura un almacén de confianza como se describe a continuación en Acerca de la configuración de TLS con el backend
  7. Realiza los cambios necesarios y guarda el proxy. Si se implementó el proxy de API, guárdalo y lo vuelve a implementar con el nuevo parámetro de configuración.

Ten en cuenta que la definición de TargetEndpoint contiene una propiedad name. Usas el valor de la propiedad name para configurar la definición de ProxyEndpoint de un proxy de API para usar el TargetEndpoint. Consulta la referencia de configuración del proxy de API para obtener más información.

TargetEndpoints se puede configurar para hacer referencia a un TargetServer, en lugar del lenguaje la URL de destino. Una configuración de TargetServer separa las URL de extremos concretos de Configuraciones de TargetEndpoint. Los TargetServers se usan para admitir el balanceo de cargas y la conmutación por error. en varias instancias de servidor de backend.

A continuación, se muestra un ejemplo de la definición 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 <HTTPTargetConnection>. en una definición de TargetEndpoint. Puedes configurar uno o más TargetServers 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 en los servidores de backend para obtener más información.

Información acerca de la configuración de TLS con el backend

Antes de configurar el acceso TLS al backend, debes entender dos aspectos puntos:

  1. De forma predeterminada, Edge no valida el certificado de backend. Debes crear un almacén de confianza para configurar Edge para validar el certificado.
  2. 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 del certificado

Cuando se realiza una solicitud TLS a través de un TargetEndpoint o TargetServer, Edge no valide de forma predeterminada el certificado TLS que recibió del servidor backend. Eso significa que Edge no valida lo siguiente:

  • El certificado debe estar firmado por una AC de confianza.
  • El certificado no debe haber vencido.
  • El certificado tiene un nombre común. Si hay un nombre común, Edge no valida que el nombre común coincida con el nombre de host especificado en la URL.

Si deseas configurar Edge para que valide el certificado de backend, debes hacer lo siguiente:

  1. Crear un almacén de confianza en Edge
  2. Sube el certificado del servidor o la cadena de certificados al almacén de confianza. Si el certificado del servidor está firmado por un tercero, deberás subir el archivo o cadena completa, incluido el certificado de la AC raíz, al almacén de confianza. No hay AC de confianza implícita.
  3. Agrega el almacén de confianza a la definición de TargetEndpoint o TargetServer.

Consulta almacenes de claves y almacenes de confianza 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>

Cómo usar una referencia a un almacén de claves o un almacén de confianza

En el siguiente ejemplo, se muestra cómo configurar un TargetEndpoint o TargetServer para admiten 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 un Definición de TargetEndpoint o TargetServer.

Apigee recomienda enfáticamente que uses una referencia al almacén de claves y de confianza en la definición de TargetEndpoints o TargetServer. La ventaja de usar una referencia es que solo tienes que actualizar la referencia para que apunte a un almacén de claves o almacén de confianza diferente para actualizar el certificado TLS

Las referencias a los almacenes de claves y almacenes de confianza en la definición de TargetEndpoints o TargetServer funciona de la misma manera que lo hacen para hosts virtuales.

Convierte un TargetEndpoint o TargetServer para usar una referencia

Es posible que tengas definiciones existentes de TargetEndpoint o TargetServer que usa el nombre literal del almacén de claves y del almacén de confianza. Para convertir el TargetEndpoint o la definición de TargetServer para usar referencias:

  1. Actualiza la definición de TargetEndpoint o TargetServer para usar una referencia.
  2. Reinicia los procesadores de mensajes de Edge:
    • Los clientes de nube pública comunícate con el equipo de asistencia de Apigee Edge para reiniciar los procesadores de mensajes.
    • Para los clientes de nube privada, reinicia uno de los procesadores de mensajes de Edge por vez.
  3. Confirma que tu TargetEndpoint o TargetServer esté funcionando correctamente.

Configura TLS unidireccional en el backend servidor

Configurar el acceso unidireccional de TLS desde Edge (cliente de TLS) cuando se usa una definición de TargetEndpoint al servidor de backend (servidor TLS) no requiere ninguna configuración adicional en Edge. Sí al servidor de backend para configurar TLS de forma correcta.

Solo debes asegurarte de que el elemento <URL> de la La definición de TargetEndpoint hace referencia al servicio de backend del protocolo HTTPS y que tú habilita TLS:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Si usas 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 del backend, debes crear un almacén de confianza. que contiene el certificado de backend o la cadena de certificación. Luego, especificas 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 TLS unidireccional, sigue estos pasos:

  1. Si quieres validar el certificado de backend, crea un almacén de confianza en Edge y sube el archivo el certificado de backend o la cadena de AC, como se describe en almacenes de claves y almacenes de confianza. Para este ejemplo, si tienes que crear un almacén de confianza, asígnale un nombre myTrustStore.
  2. Si creaste un almacén de confianza, usa la siguiente llamada a la API de POST para crear una la referencia denominada myTrustStoreRef al almacén de confianza que creaste arriba:

    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
    
  3. Usar la IU de administración perimetral para actualizar la definición de TargetEndpoint para el proxy de la API (o Si defines el proxy de API en XML, edita los archivos XML del proxy):
    1. Accede a la IU de administración de Edge en https://enterprise.apigee.com.
    2. En el menú de la IU de administración perimetral, selecciona APIs.
    3. Selecciona el nombre del proxy de API que deseas actualizar.
    4. Selecciona la pestaña Desarrollo.
    5. En Destinos extremos, selecciona predeterminada.
    6. En el área de código, edita el elemento <HTTPTargetConnection> para agrega el elemento <SSLInfo>. Asegúrate de especificar la referencia del almacén de confianza correcta y de configurar <Enabled> como verdadero:
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. Guarda el proxy de API. Si se implementó el proxy de API, cuando se guarda, se vuelve a implementar con el nuevo parámetro de configuración.

Configura TLS bidireccional en el backend servidor

Si quieres admitir TLS bidireccional entre Edge (cliente de TLS) y el servidor de backend (TLS servidor):

  • Crea un almacén de claves en Edge y sube el certificado y la clave privada de Edge.
  • Si quieres validar el certificado de backend, crea un almacén de confianza en Edge que contenga el y la cadena de AC que recibiste del servidor backend.
  • Actualizar el TargetEndpoint de cualquier proxy de API que haga referencia al servidor de backend para configurarlo Acceso a TLS.

Usa el alias de 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 que use el certificado que especifica la propiedad <KeyAlias>. Esto te permite definir un único almacén de claves para varios certificados. selecciona el que quieres usar en la definición de TargetServer. Si Edge no puede encontrar un certificado con un alias que coincida con <KeyAlias>, utiliza la acción predeterminada de seleccionar el primer certificado en el almacén de claves.

Los usuarios de Edge para la nube pública deben comunicarse con el equipo de asistencia de Apigee Edge para habilitar esta función.

Configura TLS bidireccional

Para configurar TLS bidireccional, sigue estos pasos:

  1. Crea el almacén de claves en Edge y sube el certificado y la clave privada mediante el procedimiento que se describe aquí: almacenes de claves y almacenes de confianza. Para 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.
  2. Usa la siguiente llamada a la API de POST para crear la referencia con el nombre 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
    
  3. Si deseas validar el certificado de backend, crea un almacén de confianza en Edge y sube el certificado y la AC. como se describe aquí: almacenes de claves y almacenes de confianza. Para este ejemplo, si tienes que crear un almacén de confianza, asígnale el nombre myTrustStore.
  4. Si creaste un almacén de confianza, usa la siguiente llamada a la API de POST para crear una la referencia denominada myTrustStoreRef al almacén de confianza que creaste arriba:

    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
    
  5. Usar la IU de administración perimetral para actualizar la definición de TargetEndpoint para el proxy de la API (o Si defines el proxy de API en XML, edita los archivos XML del proxy):
    1. Accede a la IU de la administración de Edge en https://enterprise.apigee.com.
    2. En el menú de la IU de administración perimetral, selecciona APIs.
    3. Selecciona el nombre del proxy de API que deseas actualizar.
    4. Selecciona la pestaña Desarrollo.
    5. En Destinos extremos, selecciona predeterminada.
    6. En el área de código, edita el elemento <HTTPTargetConnection> para agrega <SSLInfo>. . Asegúrate de especificar el almacén de claves y el alias de clave correctos y de definir Los elementos <Enabled> y <ClientAuthEnabled> deben ser verdaderos:
      <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>
    7. Guarda el proxy de API. Si se implementó el proxy de API, cuando se guarda, se vuelve a implementar con el nuevo parámetro de configuración.

Para obtener más información sobre las opciones disponibles en <TargetEndpoint>, incluido el uso de variables Si deseas proporcionar los valores <SSLInfo> de TargetEndpoint, consulta la referencia de configuración del proxy de la API.

Habilita SNI

Edge admite el uso de Server Name Indication (SNI) de Message Processors para extremos en Apigee Edge para implementaciones en la nube y de nube privada.

Para que Edge para la nube privada sea retrocompatible con tus backends de destino existentes, Apigee inhabilitó la SNI de forma predeterminada. Si tu backend de destino está configurado para admitir SNI puedes habilitar esta función. Consulta Cómo usar SNI con Edge para obtener más información.