Configura la SNI entre el procesador de mensajes perimetrales y el servidor de backend

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

La indicación del nombre del servidor (SNI) permite que se entreguen varios servidores de backend HTTPS desde la misma dirección IP y puerto sin necesidad de que esos servidores de backend usen el mismo certificado TLS. Es una extensión del protocolo TLS. Cuando la SNI está habilitada en un cliente, este pasa el nombre de host del servidor de backend como parte del protocolo de enlace TLS inicial. Esto permite que el servidor TLS determine qué certificado TLS debe usarse para validar la solicitud del cliente.

De forma predeterminada, la SNI está inhabilitada en el componente de Message Processor en Edge para la nube privada a fin de garantizar la retrocompatibilidad con los servidores de backend existentes. Si tu servidor de backend está configurado para admitir SNI, debes habilitar la SNI en el componente de Message Processor. De lo contrario, las solicitudes a la API que pasen por Apigee Edge fallarán y mostrarán fallas del protocolo de enlace TLS.

En este documento, se explica cómo hacer lo siguiente:

Antes de comenzar

Identificación del servidor habilitado para SNI

En esta sección, se describe cómo identificar si un servidor de backend está habilitado con la SNI.

  1. Ejecuta el comando openssl y trata de conectarte al nombre de host del servidor relevante (router perimetral o servidor de backend) sin pasar el nombre del servidor, como se muestra a continuación:
    openssl s_client -connect hostname:port
    
  2. Es posible que obtengas los certificados y que, en ocasiones, observes la falla del protocolo de enlace en el comando openssl, como se muestra a continuación:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
    
  3. Ejecuta el comando openssl y trata de conectarte al nombre de host del servidor relevante (router de Edge o servidor de backend) pasando el nombre del servidor como se muestra a continuación:
    openssl s_client -connect hostname:port -servername hostname
    
  4. Si se produce un error de protocolo de enlace en el paso 1 o si obtienes certificados diferentes en los pasos 1 y 2, significa que el servidor especificado tiene habilitada la SNI.
  5. Si quieres verificar esto para más de un servidor de backend, debes repetir los pasos anteriores para cada servidor de backend.

Si descubres que tienes uno o más servidores de backend con SNI habilitada, debes habilitarla en el componente de Message Processor como se explica a continuación. De lo contrario, las solicitudes a la API que pasan por Apigee Edge fallarán y mostrarán fallas del protocolo de enlace TLS.

Habilita la SNI entre los procesadores de mensajes perimetrales y el servidor de backend

En esta sección, se explica cómo habilitar la SNI entre el procesador de mensajes perimetrales y el servidor de backend. La SNI se puede habilitar a través de la propiedad jsse.enableSNIExtension en el componente de Message Processor. Para configurar cualquier propiedad en Message Processor, usa el token según la sintaxis descrita en Cómo configurar Edge.

Para habilitar la SNI en los procesadores de mensajes, sigue estos pasos:

  1. Encuentra el token para la propiedad jsse.enableSNIExtension
  2. Habilita la SNI en el procesador de mensajes

Ubica el token de la propiedad jsse.enableSNIExtension

En los siguientes pasos, se describe cómo ubicar el token para la propiedad jsse.enableSNIExtension:

  1. Busca la propiedad jsse.enableSNIExtension en el directorio del código fuente /opt/apigee/edge-message-processor/source de Message Processor con el siguiente comando:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
    
  2. El resultado de este comando muestra el token de la propiedad jsse.enableSNIExtension de Message Processor de la siguiente manera:
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}
    

    En el ejemplo anterior, la string entre las etiquetas {T}{/T} es el nombre del token que puedes configurar en el archivo .properties de Message Processor.

    Por lo tanto, el token de la propiedad jsse.enableSNIExtension es el siguiente:

    conf_system_jsse.enableSNIExtension
    

Habilita la SNI en el procesador de mensajes

En los siguientes pasos, se describe cómo habilitar la SNI en el componente de Message Processor de Apigee.

  1. En la máquina de Message Processor, abre el siguiente archivo en un editor. Si aún no existe, créalo.
    /opt/apigee/customer/application/message-processor.properties
    

    Por ejemplo, para abrir el archivo con vi, ingresa el siguiente comando:

    vi /opt/apigee/customer/application/message-processor.properties
    

  2. Agrega una línea con el siguiente formato al archivo de propiedades:
    conf_system_jsse.enableSNIExtension=true
    
  3. Guarda los cambios.
  4. Asegúrate de que este archivo de propiedades sea propiedad del usuario apigee, como se muestra a continuación:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Reinicia Message Processor como se muestra a continuación:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Verifica que la configuración de SNI esté actualizada en el procesador de mensajes.
  7. Si tienes más de un Message Processor, repite los pasos anteriores en todos ellos.

Inhabilita la SNI entre los procesadores de mensajes perimetrales y el servidor de backend

Por lo general, no deberías ver ningún problema después de habilitar la SNI. Sin embargo, si observas algún problema de conectividad entre Edge Message Processor y el servidor de backend después de habilitar la SNI, siempre puedes inhabilitar la SNI mediante los siguientes pasos.

La SNI se puede inhabilitar si vuelves a configurar la propiedad jsse.enableSNIExtension como false en el componente Message Processor.

Inhabilita la SNI en los procesadores de mensajes

En los siguientes pasos, se describe cómo inhabilitar la SNI en los procesadores de mensajes de Apigee.

  1. En la máquina de Message Processor, abre el siguiente archivo en un editor. Si aún no existe, créalo.
    /opt/apigee/customer/application/message-processor.properties
    

    Por ejemplo, para abrir el archivo con vi, ingresa el siguiente comando:

    vi /opt/apigee/customer/application/message-processor.properties
    

  2. Si la línea conf_system_jsse.enableSNIExtension=true existe en /opt/apigee/customer/application/message-processor.properties, modifícala de la siguiente manera:
    conf_system_jsse.enableSNIExtension=false
    
  3. Guarda los cambios.
  4. Asegúrate de que este archivo de propiedades sea propiedad del usuario apigee, como se muestra a continuación:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Reinicia Message Processor como se muestra a continuación:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Verifica que la configuración de SNI esté actualizada en el procesador de mensajes.
  7. Si tienes más de un Message Processor, repite los pasos anteriores en todos ellos.

Verifica la configuración de SNI en los procesadores de mensajes

En esta sección, se explica cómo verificar que la configuración de SNI se haya actualizado de forma correcta en Message Processor.

Aunque uses el token conf_system_jsse.enableSNIExtension para configurar SNI en Message Processor, debes verificar que se haya establecido la propiedad real jsse.enableSNIExtension con el valor nuevo.

  1. En la máquina del procesador de mensajes, busca la propiedad jsse.enableSNIExtension en el directorio /opt/apigee/edge-message-processor/conf y verifica si se configuró con el valor nuevo, como se muestra a continuación:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
    
  2. Si la configuración de SNI se actualiza de forma correcta en Message Processor, el comando anterior muestra el valor nuevo en el archivo system.properties.

    El resultado de muestra del comando anterior después de habilitar la SNI en el procesador de mensajes es el siguiente:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true
    

    De manera similar, el resultado de muestra del comando anterior después de inhabilitar la SNI en el procesador de mensajes es el siguiente:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false
    

    En el resultado de ejemplo anterior, ten en cuenta que la propiedad jsse.enableSNIExtension se actualizó al valor nuevo true o false en system.properties. Esto indica que la SNI se habilitó o inhabilitó de forma correcta en Message Processor.

  3. Si aún ves el valor anterior de la propiedad jsse.enableSNIExtension, verifica si seguiste todos los pasos descritos en la sección correspondiente para habilitar o inhabilitar la SNI de forma correcta. Si omitiste algún paso, repite todos los pasos correctamente.
  4. Si aún no puedes habilitar o inhabilitar la SNI , comunícate con el equipo de asistencia de Apigee Edge.