Estás viendo la documentación de Apigee Edge.
Ir a la documentación de
Apigee X. info
Síntoma
La aplicación cliente obtiene un código de estado HTTP 503 Service Unavailable con el código de error messaging.adaptors.http.flow.SslHandshakeFailed como respuesta a las llamadas a la API.
Mensaje de error
La aplicación cliente obtiene el siguiente código de respuesta:
HTTP/1.1 503 Service Unavailable
Además, es posible que observes el siguiente mensaje de error:
{
"fault":{
"faultstring":"SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target",
"detail":{
"errorcode":"messaging.adaptors.http.flow.SslHandshakeFailed"
}
}
}Causas posibles
Es posible que recibas el código de estado 503 Service Unavailable con el código de error messaging.adaptors.http.flow.SslHandshakeFailed debido a una falla durante el proceso de protocolo de enlace SSL entre el Message Processor de Apigee Edge y el servidor de backend por varios motivos. Por lo general, el mensaje de error en faultstring indica una posible causa de alto nivel que provocó este error.
Según el mensaje de error que se observe en faultstring, debes usar técnicas adecuadas para solucionar el problema. En este manual, se explica cómo solucionar este error si observas el mensaje de error SSL Handshake failed
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target en faultstring.
Este error ocurre durante el proceso de protocolo de enlace SSL entre el procesador de mensajes de Apigee Edge y el servidor de backend:
- Si el truststore del Message Processor de Apigee Edge es el siguiente:
- Contiene una cadena de certificados que no coincide con la cadena de certificados completa del servidor de backend
- No contiene la cadena de certificados completa del servidor de backend
- Si la cadena de certificados que presenta el servidor de backend:
- Contiene un nombre de dominio completamente calificado (FQDN) que no coincide con el nombre de host especificado en el extremo de destino
- Contiene una cadena de certificados incorrecta o incompleta
Las posibles causas de este problema son las siguientes:
| Causa | Descripción | Instrucciones de solución de problemas aplicables para |
|---|---|---|
| Certificado o cadena de certificados incorrectos o incompletos en el almacén de certificados de confianza del Message Processor | El certificado o su cadena almacenados en el almacén de certificados de confianza del Message Processor de Apigee Edge no coinciden con la cadena de certificados del servidor de backend o no contienen la cadena de certificados completa del servidor de backend. | Usuarios de la nube pública y privada de Edge |
| No coincide el FQDN en el certificado del servidor de backend y el nombre de host en el extremo de destino | El certificado que presentó el servidor de backend contiene un FQDN que no coincide con el nombre de host especificado en el extremo de destino. | Usuarios de la nube pública y privada de Edge |
| El servidor de backend presentó un certificado o una cadena de certificados incorrectos o incompletos | La cadena de certificados que presenta el servidor de backend es incorrecta o está incompleta. | Usuarios de la nube pública y privada de Edge |
Pasos comunes de diagnóstico
Usa una de las siguientes herramientas o técnicas para diagnosticar este error:
Supervisión de API
Procedimiento 1: Usa la supervisión de API
Para diagnosticar el error con API Monitoring, haz lo siguiente:
- Accede a la IU de Apigee Edge como usuario con un rol adecuado.
Cambia a la organización en la que deseas investigar el problema.
- Navega a la página Analizar > Supervisión de API > Investigar.
- Selecciona el período específico en el que observaste los errores.
Representa gráficamente el código de falla en función del tiempo.
Selecciona una celda que tenga el código de falla
messaging.adaptors.http.flow.SslHandshakeFailed, como se muestra a continuación:( aumentar el tamaño de la imagen)

La información sobre el código de falla
messaging.adaptors.http.flow.SslHandshakeFailedse muestra como se indica a continuación:( aumentar el tamaño de la imagen)

Haz clic en Ver registros y expande la fila de la solicitud con errores.
( aumentar el tamaño de la imagen)
- En la ventana Registros, ten en cuenta los siguientes detalles:
- ID del mensaje de solicitud
- Código de estado:
503 - Fuente del error:
target - Código de falla:
messaging.adaptors.http.flow.SslHandshakeFailed
Seguimiento
Procedimiento 2: Cómo usar la herramienta de Trace
Para diagnosticar el error con la herramienta Trace, haz lo siguiente:
- Habilita la sesión de registro y una de las siguientes opciones:
- Espera a que se produzca el error
503 Service Unavailablecon el código de errormessaging.adaptors.http.flow.SslHandshakeFailed, o - Si puedes reproducir el problema, realiza la llamada a la API para reproducirlo.
503 Service Unavailable
- Espera a que se produzca el error
Asegúrate de que la opción Mostrar todos los FlowInfos esté habilitada:

- Selecciona una de las solicitudes con errores y examina el registro.
- Navega por las diferentes fases del registro y ubica dónde se produjo la falla.
Por lo general, encontrarás el error después de la fase Target Request Flow Started, como se muestra a continuación:
( aumentar el tamaño de la imagen)

- Toma nota de los valores de los siguientes elementos del registro:
- error:
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target - error.cause:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target - error.class:
com.apigee.errors.http.server.ServiceUnavailableException - El valor del error
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetindica que falló el protocolo de enlace SSL, ya que el Message Processor de Apigee Edge no pudo validar el certificado del servidor de backend.
- error:
- Navega a la fase AX (datos de Analytics registrados) en el registro y haz clic en ella.
Desplázate hacia abajo hasta la sección Phase Details Error Headers y determina los valores de X-Apigee-fault-code, X-Apigee-fault-source y X-Apigee-Message-ID, como se muestra a continuación:
( aumentar el tamaño de la imagen)

- Ten en cuenta los valores de X-Apigee-fault-code, X-Apigee-fault-source y X-Apigee-Message-ID:
| Encabezados de error | Valor |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.SslHandshakeFailed |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedimiento 3: Uso de registros de acceso de NGINX
Para diagnosticar el error con los registros de acceso de NGINX, haz lo siguiente:
- Si eres usuario de Private Cloud, puedes usar los registros de acceso de NGINX para determinar la información clave sobre
503 Service Unavailablede HTTP. Verifica los registros de acceso de NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Busca si hay errores de
503con el código de errormessaging.adaptors.http.flow.SslHandshakeFaileddurante un período específico (si el problema ocurrió en el pasado) o si aún hay solicitudes que fallan con503. Si encuentras errores de
503con el X-Apigee-fault-code que coincida con el valor demessaging.adaptors.http.flow.SslHandshakeFailed, determina el valor de X-Apigee-fault-source.Ejemplo de error 503 del registro de acceso de NGINX:
( aumentar el tamaño de la imagen)
La entrada de ejemplo anterior del registro de acceso de NGINX tiene los siguientes valores para X-Apigee-fault-code y X-Apigee-fault-source:
Encabezados Valor X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailedX-Apigee-fault-source target
Registros de Message Processor
Procedimiento 4: Cómo usar los registros de Message Processor
- Determina el ID del mensaje de una de las solicitudes que fallaron con API Monitoring, la herramienta Trace o los registros de acceso de NGINX, como se explica en Pasos de diagnóstico comunes.
Busca el ID del mensaje de solicitud específico en el registro del Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log). Es posible que observes el siguiente error:org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context.handshakeFailed() : SSLClientChannel[Connected: Remote:X.X.X.X:443 Local:192.168.194.140:55102]@64596 useCount=1 bytesRead=0 bytesWritten=0 age=233ms lastIO=233ms isOpen=true handshake failed, message: General SSLEngine problemEl error anterior indica que falló el protocolo de enlace SSL entre el Message Processor y el servidor de backend.
A continuación, se mostrará una excepción con un seguimiento de pila detallado, como se muestra a continuación:
org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onException() : RequestWriteListener.onException(HTTPRequest@1522922c) javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1478) at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ... <snipped> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Alerts.getSSLException(Alerts.java:203) at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ... <snipped>Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302) ... <snipped>Ten en cuenta que la falla del protocolo de enlace se debe a lo siguiente:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetEsto indica que falló el protocolo de enlace SSL, ya que el Message Processor de Apigee Edge no pudo validar el certificado del servidor de backend.
Causa: Certificado o cadena de certificados incorrectos o incompletos en el almacén de certificados de confianza del Message Processor
Diagnóstico
- Determina el código de falla y la fuente de falla del error observado con la supervisión de API, la herramienta Trace o los registros de acceso de NGINX, como se explica en los pasos de diagnóstico comunes.
- Si el código de falla es
messaging.adaptors.http.flow.SslHandshakeFailed, determina el mensaje de error con uno de los siguientes métodos: - Encuentra el error.cause con la herramienta Trace, como se explica en Pasos comunes de diagnóstico
- Busca la excepción con los registros del procesador de mensajes, como se explica en Pasos comunes de diagnóstico.
- Busca el
faultstringen la respuesta de error a tu llamada a la API, como se muestra en Mensaje de error. - Si el mensaje de error es
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target", indica que falló el protocolo de enlace SSL, ya que el Message Processor de Apigee Edge no pudo validar el certificado del servidor de backend.
Puedes depurar este problema en dos fases:
- Fase 1: Determina la cadena de certificados del servidor de backend
- Fase 2: Compara la cadena de certificados almacenada en el almacén de certificados de confianza del Message Processor
Fase 1
Fase 1: Determina la cadena de certificados del servidor de backend
Usa uno de los siguientes métodos para determinar la cadena de certificados del servidor de backend:
openssl
Ejecuta el comando openssl en el nombre de host del servidor de backend de la siguiente manera:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
Ten en cuenta la cadena de certificados del resultado del comando anterior:
Cadena de certificados del servidor de backend de ejemplo del resultado del comando openssl:
Certificate chain 0 s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
tcpdump
- Si eres usuario de la nube pública, captura los paquetes TCP/IP en el servidor de backend.
- Si eres usuario de Private Cloud, puedes capturar los paquetes TCP/IP en el servidor de backend o en el Message Processor. Preferentemente, captúralos en el servidor de backend, ya que los paquetes se desencriptan en ese servidor.
Usa el siguiente comando tcpdump para capturar paquetes TCP/IP:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
Analiza los paquetes TCP/IP con la herramienta Wireshark o una herramienta similar con la que estés familiarizado.
Análisis de muestra de tcpdump
( aumentar el tamaño de la imagen)
- Paquete núm. 43: El Message Processor (origen) envió un mensaje
Client Helloal servidor de backend (destino). - Paquete núm. 44: El servidor de backend confirma la recepción del mensaje
Client Hellodel Message Processor. - Paquete 45: El servidor de backend envía el mensaje
Server Hellojunto con su certificado. - Paquete núm. 46: El Message Processor confirma la recepción del mensaje
Server Helloy el certificado. Paquete 47: El procesador de mensajes envía un mensaje
FIN, ACKseguido deRST, ACKen el paquete 48.Esto indica que falló la validación del certificado del servidor de backend por parte del Message Processor. Esto se debe a que el Message Processor no tiene ningún certificado que coincida con el del servidor de backend o no puede confiar en el certificado del servidor de backend con los certificados disponibles en su almacén de certificados de confianza (del Message Processor).
Puedes volver y revisar el paquete núm. 45 para determinar la cadena de certificados que envió el servidor de backend.
( aumentar el tamaño de la imagen)
- En este ejemplo, puedes ver que el servidor envió un certificado de hoja con
common name (CN) = mocktarget.apigee.net, seguido de un certificado intermedio conCN= GTS CA 1D4y un certificado raíz conCN = GTX Root R1.
Si determinaste que falló la validación del certificado del servidor, ve a Fase 2: Compara el certificado del servidor de backend y los certificados almacenados en el almacén de certificados de confianza del Message Processor.
- Paquete núm. 43: El Message Processor (origen) envió un mensaje
Fase 2
Fase 2: Compara el certificado del servidor de backend y los certificados almacenados en el almacén de certificados de confianza del procesador de mensajes
- Determina la cadena de certificados del servidor de backend.
- Para determinar el certificado almacenado en el almacén de certificados de confianza del procesador de mensajes, sigue estos pasos:
Obtén el nombre de referencia del almacén de confianza del elemento
TrustStoreen la secciónSSLInfodelTargetEndpoint.Veamos una sección
SSLInfode ejemplo en una configuración deTargetEndpoint:<TargetEndpoint name="default"> ... <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore> ref://myCompanyTrustStoreRef </TrustStore> </SSLInfo> </HTTPTargetConnection> ... </TargetEndpoint>- En el ejemplo anterior, el nombre de referencia
TrustStoreesmyCompanyTruststoreRef. En la IU de Edge, selecciona Entornos > Referencias. Ten en cuenta el nombre en la columna Referencia para la referencia específica del almacén de confianza. Este será el nombre de tu almacén de confianza.
( aumentar el tamaño de la imagen)
En el ejemplo anterior, el nombre del almacén de confianza es el siguiente:
myCompanyTruststoreRef:
myCompanyTruststore
Obtén los certificados almacenados en el almacén de certificados de confianza (determinado en el paso anterior) con las siguientes APIs:
Obtén todos los certificados de un almacén de claves o de certificados de confianza. Esta API enumera todos los certificados en el almacén de confianza específico.
Usuario de la nube pública:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Usuario de Nube privada:
curl -v -X GET http://MANAGEMENT_HOST:PORT_#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Dónde:
- ORGANIZATION_NAME es el nombre de la organización.
- ENVIRONMENT_NAME es el nombre del entorno.
- KEYSTORE_NAME es el nombre del almacén de claves.
- $TOKEN se configura en tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0
- Las opciones de
curlque se usan en este ejemplo se describen en Usa curl
Resultado de muestra:
Los certificados del almacén de confianza de ejemplo
myCompanyTruststoreson los siguientes:[ "serverCert" ]
-
Obtén los detalles del certificado específico de un almacén de claves o de confianza.
Esta API devuelve información sobre un certificado específico en el almacén de confianza específico.
Usuario de la nube pública:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Usuario de Private Cloud
curl -v -X GET http://MANAGEMENT_HOST:PORT_#>/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Dónde:
- ORGANIZATION_NAME es el nombre de la organización.
- ENVIRONMENT_NAME es el nombre del entorno.
- KEYSTORE_NAME es el nombre del almacén de claves.
- CERT_NAME es el nombre del certificado.
- $TOKEN se configura en tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0
- Las opciones de
curlque se usan en este ejemplo se describen en Usa curl
Resultado de muestra:
Los detalles de
serverCertmuestran el asunto y el emisor de la siguiente manera:Certificado de hoja o entidad:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Certificado intermedio:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
Verifica que el certificado del servidor real que obtuviste en el paso 1 y el certificado almacenado en el almacén de certificados de confianza que obtuviste en el paso 3 coincidan. Si no coinciden, esa es la causa del problema.
En el ejemplo anterior, analicemos un certificado a la vez:
- Certificado de hoja:
Desde el servidor de backend:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
Desde el almacén de confianza del procesador de mensajes (cliente):
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
El certificado de hoja almacenado en el almacén de certificados de confianza coincide con el del servidor de backend.
- Certificado intermedio:
Desde el servidor de backend:
s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
Desde el almacén de confianza del procesador de mensajes (cliente):
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
El certificado intermedio almacenado en el almacén de certificados de confianza coincide con el del servidor de backend.
- Certificado raíz:
Desde el servidor de backend:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
Falta por completo el certificado raíz en el almacén de certificados de confianza del Message Processor.
Dado que falta el certificado raíz en el almacén de certificados de confianza, el Message Processor arroja la siguiente excepción:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
y devuelve
503 Service Unavailablecon el código de errormessaging.adaptors.http.flow.SslHandshakeFaileda las aplicaciones cliente.
- Certificado de hoja:
Solución
- Asegúrate de tener la cadena de certificados completa y adecuada del servidor de backend.
- Si eres usuario de la Nube pública, sigue las instrucciones en Actualiza un certificado TLS para la nube para actualizar el certificado al almacén de certificados de confianza de Message Processor de Apigee Edge.
- Si eres usuario de Private Cloud, sigue las instrucciones que se indican en Actualiza un certificado TLS para Private Cloud para actualizar el certificado al almacén de certificados de confianza de Message Processor de Apigee Edge.
Causa: No coincide el FQDN en el certificado del servidor de backend y el nombre de host en el extremo de destino
Si el servidor de backend presenta una cadena de certificados que contiene un FQDN que no coincide con el nombre de host especificado en el extremo de destino, el procesador de mensajes de Apigee Edge devuelve el error SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target.
Diagnóstico
- Examina el extremo de destino específico en el proxy de API en el que observas este error y anota el nombre de host del servidor de backend:
Ejemplo de TargetEndpoint:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.company.com/resource</URL> </HTTPTargetConnection> </TargetEndpoint>En el ejemplo anterior, el nombre de host del servidor de backend es
backend.company.com. Determina el FQDN en el certificado del servidor de backend con el comando
openssl, como se muestra a continuación:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
Por ejemplo:
openssl s_client -connect backend.company.com:443
Examina la sección
Certificate chainy observa el FQDN especificado como parte del CN en el asunto del certificado de hoja.Certificate chain 0 s:/
CN=backend.apigee.neti:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1En el ejemplo anterior, el FQDN del servidor de backend es
backend.apigee.net.- Si el nombre de host del servidor de backend que se obtuvo en el paso 1 y el FQDN que se obtuvo en el paso 2 no coinciden, esa es la causa del error.
- En el ejemplo anterior, el nombre del host en el extremo de destino es
backend.company.com. Sin embargo, el nombre de FQDN en el certificado del servidor de backend esbackend.apigee.net. Como no coinciden, verás este error.
Solución
Puedes solucionar este problema con uno de los siguientes métodos:
FQDN correcto
Actualiza el almacén de claves del servidor de backend con el FQDN correcto y una cadena de certificados válida y completa:
- Si no tienes un certificado de servidor de backend con el FQDN correcto, obtén el certificado adecuado de una AC (autoridad certificadora) apropiada.
Valida que tengas una cadena de certificados del servidor de backend válida y completa.
- Una vez que tengas la cadena de certificados válida y completa con el FQDN correcto del servidor de backend en el certificado de hoja o de entidad que sea idéntico al nombre de host especificado en el extremo de destino, actualiza el almacén de claves del backend con la cadena de certificados completa.
Servidor de backend correcto
Actualiza el extremo de destino con el nombre de host correcto del servidor de backend:
- Si el nombre de host se especificó de forma incorrecta en el extremo de destino, actualiza el extremo de destino para que tenga el nombre de host correcto que coincida con el FQDN en el certificado del servidor de backend.
Guarda los cambios en el proxy de API.
En el ejemplo anterior, si el nombre de host del servidor de backend se especificó de forma incorrecta, puedes corregirlo usando el FQDN del certificado del servidor de backend, es decir,
backend.apigee.net, de la siguiente manera:<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.apigee.net/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
Causa: El servidor de backend presentó un certificado o una cadena de certificados incorrectos o incompletos
Diagnóstico
- Ejecuta el comando
opensslen el nombre de host del servidor de backend de la siguiente manera para obtener la cadena de certificados del servidor de backend:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
Ten en cuenta el
Certificate chaindel resultado del comando anterior.Cadena de certificados del servidor de backend de muestra del resultado del comando openssl:
Certificate chain 0 s:/
CN=mocktarget.apigee.neti:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 - Verifica que tengas la cadena de certificados correcta y completa, como se explica en Validación de la cadena de certificados.
Si no tienes la cadena de certificados válida y completa para el servidor de backend, esa es la causa del problema.
En la cadena de certificados del servidor de backend de ejemplo que se muestra arriba, falta el certificado raíz. Por lo tanto, recibes este error.
Solución
Actualiza el almacén de claves del servidor de backend con una cadena de certificados válida y completa:
Valida que tengas una cadena de certificados del servidor de backend válida y completa.
- Actualiza la cadena de certificados válida y completa en el almacén de claves del servidor de backend.
Si el problema persiste, consulta Recopila información de diagnóstico.
Se debe recopilar información de diagnóstico
Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y comunícate con el equipo de asistencia de Apigee Edge:
- Si eres usuario de la nube pública, proporciona la siguiente información:
- Nombre de la organización
- Nombre del entorno
- Nombre del proxy de API
- Comando
curlcompleto para reproducir el error - Archivo de registro que muestra el error
Resultado del comando
openssl:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#- Paquetes TCP/IP capturados en el servidor de backend
- Si eres usuario de la nube privada, proporciona la siguiente información:
- Mensaje de error completo observado
- Paquete de proxy de API
- Archivo de registro que muestra el error
- Registros de Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log - Resultado del comando
openssl:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_# - Paquetes TCP/IP capturados en el servidor de backend o en el procesador de mensajes.
- Es el resultado de la API de Get all certificates for a keystore or truststore y también los detalles de cada certificado obtenido con la API de Get Cert Details from a Keystore or Truststore.