Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Síntoma
La aplicación cliente obtiene un código de estado HTTP de 503 Service Unavailable
con el
código de error messaging.adaptors.http.flow.SslHandshakeFailed
como respuesta a la API
llamadas.
Mensaje de error
La aplicación cliente obtiene el siguiente código de respuesta:
HTTP/1.1 503 Service Unavailable
Además, puedes observar 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 la instalación
protocolo de enlace entre el procesador de mensajes de Apigee Edge y el servidor de backend para una serie de
y otras razones. El mensaje de error en faultstring
suele indicar
una posible causa de alto nivel que haya originado este error.
Según el mensaje de error observado en faultstring
, debes usar
técnicas adecuadas para solucionar el problema. En esta guía, se explica cómo solucionar problemas
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 almacén de confianza del procesador de mensajes de Apigee Edge cuenta con lo siguiente:
- Contiene una cadena de certificados que no coincide con el estado de estado la cadena de certificados O
- No contiene la cadena de certificados completa del servidor de backend
- Si la cadena de certificados que presenta el servidor de backend, sucede lo siguiente:
- Contiene 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 incorrecto o incompleto en el almacén de confianza del Procesador de mensajes | El certificado o su cadena almacenado en el almacén de confianza del procesador de mensajes de Apigee Edge no coincide con la cadena de certificados del servidor de backend o no contiene la cadena de certificados completa del servidor de backend. | Usuarios perimetrales de nubes privadas y públicas |
El FQDN en el certificado del servidor de backend no coincide con el nombre del host en el extremo de destino | El certificado que presenta el servidor de backend contiene un FQDN que no coincide con el nombre de host especificado en el extremo de destino. | Usuarios perimetrales de nubes privadas y públicas |
Certificado o cadena de certificados incorrecto o incompleto que presenta el servidor de backend | La cadena de certificados que presenta el servidor de backend es incorrecta o está incompleta. | Usuarios perimetrales de nubes privadas y públicas |
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 la supervisión de API, haz lo siguiente:
- Accede a la IU de Apigee Edge como usuario con un el puesto adecuado.
Cambia a la organización en la que quieres investigar el problema.
- Navega a Analyze > Supervisión de API > Investigar.
- Selecciona el período específico en el que observaste los errores.
Traza Código de error en Tiempo.
Seleccionar una celda que tenga el código de falla
messaging.adaptors.http.flow.SslHandshakeFailed
como se muestra a continuación:Información sobre el código de falla
messaging.adaptors.http.flow.SslHandshakeFailed
se muestra como como se muestra a continuación:Haz clic en Ver registros y expande la fila de la solicitud con errores.
- En la ventana Registros, observa los siguientes detalles:
- ID de mensaje de la solicitud
- Código de estado:
503
- Fuente del error:
target
- Código de error:
messaging.adaptors.http.flow.SslHandshakeFailed
Trace
Procedimiento 2: Usa la herramienta Trace
Para diagnosticar el error con la herramienta Trace, sigue estos pasos:
- Habilita la sesión de seguimiento y haz lo siguiente:
- Espera el error
503 Service Unavailable
con el código de errormessaging.adaptors.http.flow.SslHandshakeFailed
, o - Si puedes reproducir el problema, realiza la llamada a la API para hacerlo.
503 Service Unavailable
- Espera el error
Asegúrate de que Show all FlowInfos esté habilitado:
- Selecciona una de las solicitudes fallidas y examina el seguimiento.
- Navega por las diferentes fases del seguimiento y localiza dónde ocurrió la falla.
Por lo general, encontrarás el error después de la fase Target Request Flow Started (Flujo de solicitud objetivo iniciado). como se muestra a continuación:
- Toma nota de los valores de lo siguiente del seguimiento:
- 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 target
indica que el protocolo de enlace SSL falló. ya que el procesador de mensajes de Apigee Edge no pudo validar el estado certificado.
- error:
- Navega a la fase AX (datos registrados de Analytics) en el seguimiento y haz clic en ella.
Desplázate hasta la sección Encabezados de error de detalles de la fase y determina el valores de X-Apigee-fault-code y X-Apigee-fault-source, y X-Apigee-Message-ID como se muestra a continuación:
- Observa 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: Usa registros de acceso de NGINX
Para diagnosticar el error con los registros de acceso de NGINX, haz lo siguiente:
- Si eres un usuario de la nube privada, puedes usar los registros de acceso de NGINX para determinar
la información clave sobre
503 Service Unavailable
HTTP. Verifica los registros de acceso de NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Realiza una búsqueda para ver si hay algún error
503
con el código de errormessaging.adaptors.http.flow.SslHandshakeFailed
durante un período específico (si el problema ocurrió en el anteriores) o si todavía hay solicitudes que fallan con503
. Si encuentras algún error
503
con la coincidencia X-Apigee-fault-code el valor demessaging.adaptors.http.flow.SslHandshakeFailed
y, luego, y determinar el valor de X-Apigee-fault-source.Ejemplo de error 503 del registro de acceso de NGINX:
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.SslHandshakeFailed
X-Apigee-fault-source target
Registros del procesador de mensajes
Procedimiento 4: Usa los registros del procesador de mensajes
- Determinar el ID de mensaje de una de las solicitudes fallidas con la supervisión de API, la herramienta Trace o NGINX Access Logs, como se explica en Pasos de diagnóstico comunes.
Busca el ID de mensaje de solicitud específico en el registro de 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-1
NIOThread@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 el protocolo de enlace SSL falló entre Message Processor y el servidor de backend.
A continuación, verás 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-1
NIOThread@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 target
at 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 target
Esto indica que el protocolo de enlace SSL falló porque el procesador de mensajes de Apigee Edge se no puede validar el certificado del servidor de backend.
Causa: Certificado o cadena de certificados incorrectos o incompletos en el almacén de confianza del Procesador de mensajes
Diagnóstico
- Determina el Código de error y la Fuente del error para el error observado con la API. Monitoring, la herramienta de seguimiento o los registros de acceso NGINX como se explica en Common pasos del diagnóstico.
- Si el Código de error es
messaging.adaptors.http.flow.SslHandshakeFailed
, entonces determina el mensaje de error mediante uno de los siguientes métodos: - Busque error.cause con la herramienta Trace, como se explica en Pasos comunes del diagnóstico
- Busca la excepción con los registros de Message Processor. Pasos comunes del diagnóstico
- Busca el
faultstring
de la respuesta de error a tu llamada a la API, como se ve 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 el protocolo de enlace SSL falló, ya que el Message Processor de Apigee Edge no pudo validar el comportamiento certificado.
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 confianza de 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 backend:
openssl
Ejecuta el comando openssl
en el host del servidor de backend
de la siguiente manera:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
Observa la cadena de certificados del resultado del comando anterior:
Ejemplo de cadena de certificados del servidor de backend 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 un usuario de la nube pública, captura los paquetes TCP/IP en la de backend.
- Si eres un usuario de la nube privada, puedes capturar el TCP/IP en el servidor backend o Message Processor. Preferentemente, capturarlos en mientras se desencriptan los paquetes en el servidor de backend.
Usa los siguientes tcpdump para capturar paquetes TCP/IP:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
Analiza los paquetes TCP/IP con el Herramienta Wireshark o herramienta similar con la que estás familiarizado.
Análisis de muestra de Tcpdump
- Paquete 43: El procesador de mensajes (fuente) envió un
Client Hello
al servidor de backend (destino). - Paquete 44: El servidor de backend confirma la recepción del
Client Hello
mensaje del procesador de mensajes. - Paquete 45: El servidor de backend envía el
Server Hello
. junto con su certificado. - Paquete 46: El Procesador de mensajes acusa recibo del
Server Hello
y el certificado. Paquete no 47: El procesador de mensajes envía un
FIN, ACK
. seguido deRST, ACK
en el paquete n.o 48.Esto indica que la validación del certificado del servidor backend por parte del Se produjo un error en el procesador de mensajes. Esto se debe a que Message Processor no tiene cualquier certificado que coincida con el certificado del servidor de backend o en el que no se pueda confiar del certificado del servidor de backend con los certificados disponibles en su al almacén de confianza (del procesador de mensajes).
Puedes volver, revisar el Paquete 45 y determinar el certificado. cadena que envía el servidor de backend
- En este ejemplo, puedes ver que el servidor envió un certificado de entidad final.
con el
common name (CN) = mocktarget.apigee.net
, seguido de un certificado intermedio conCN= GTS CA 1D4
y certificado raíz conCN = GTX Root R1
.
Si comprobaste que la validación de certificación del servidor falló, entonces Ve a la Fase 2: Compara el certificado del servidor de backend. y los certificados almacenados en el almacén de confianza del Procesador de mensajes.
- Paquete 43: El procesador de mensajes (fuente) envió un
Fase 2
Fase 2: Compara el certificado del servidor de backend y los certificados almacenados en Almacén de confianza del procesador de mensajes
- Determina la cadena de certificados del servidor de backend.
- Determinar el certificado almacenado en el almacén de confianza del Procesador de mensajes utilizando
sigue estos pasos:
Obtén el nombre de referencia del almacén de confianza del elemento
TrustStore
. en la secciónSSLInfo
deTargetEndpoint
.Observemos una sección
SSLInfo
de ejemplo en unaTargetEndpoint
. actual:<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
TrustStore
esmyCompanyTruststoreRef
En la IU de Edge, selecciona Entornos > Referencias Anota el nombre en la La columna Reference para la referencia específica del almacén de confianza. Este será tu nombre del almacén de confianza.
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 confianza (determinado en el paso anterior) con las siguientes APIs:
Obtén todos los certificados de un almacén de claves o un almacén 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 la 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 está configurado 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
curl
que se usan en este ejemplo se describen en Cómo usar curl
Resultado de muestra:
Los certificados del almacén de confianza de ejemplo
myCompanyTruststore
son los siguientes:[ "serverCert" ]
-
Obtener detalles del certificado para el certificado específico de un almacén de claves o un almacén de confianza
Esta API devuelve la información sobre un certificado específico en la
almacén de confianza.
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 la nube privada
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 está configurado 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
curl
que se usan en este ejemplo se describen en Cómo usar curl
Resultado de muestra:
En los detalles de
serverCert
, se muestran el sujeto y la entidad emisora de la siguiente manera:Certificado Hoja o de entidad:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Certificado de nivel 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 real del servidor que se obtuvo en el paso 1 y el certificado almacenada en el almacén de confianza obtenido en la coincidencia del paso 3. Si no coinciden, entonces esa es la la causa del problema.
En el ejemplo anterior, veamos 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 (cliente) de Message Processor:
"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 confianza coincide con el del backend servidor.
- 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 (cliente) de Message Processor:
"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 confianza coincide con el del 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 Message Processor. almacén de confianza.
Dado que falta el certificado raíz en el almacén de confianza, el El procesador de mensajes 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 muestra
503 Service Unavailable
con el código de error.messaging.adaptors.http.flow.SslHandshakeFailed
al cliente aplicaciones.
- Certificado de hoja:
Solución
- Asegúrate de tener la cadena de certificados adecuada y completa del servidor de backend.
- Si eres usuario de la nube pública, sigue las instrucciones Actualizar un certificado TLS para Cloud a fin de actualizar el certificado a los Almacén de confianza del procesador de mensajes.
- Si eres un usuario de la Nube privada, sigue las instrucciones de Actualiza un certificado TLS para la nube privada a fin de que se actualice el certificado a Almacén de confianza de Message Processor de Apigee Edge
Causa: no coincide el FQDN en el certificado del servidor de backend con el nombre del 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
de host especificado en el extremo de destino, el proceso de mensajes de Apigee Edge mostrará 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 estás observando
y anota el nombre del 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
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 chain
y observa el FQDN especificado como parte de CN en el asunto del certificado de entidad final.Certificate chain 0 s:/
CN=backend.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 R1En el ejemplo anterior, el FQDN del servidor de backend es
backend.apigee.net
.- Si el nombre de host del servidor de backend se obtuvo en el paso 1 y el FQDN se obtuvo el paso 2 no coinciden, esa es la causa del error.
- En el ejemplo anterior, el nombre de host en el extremo de destino es
backend.company.com
Sin embargo, el nombre de FQDN en el certificado del servidor esbackend.apigee.net
. Dado que no coinciden, verás este error.
Solución
Para solucionar este problema, puedes usar uno de los siguientes métodos:
FQDN correcto
Actualiza el almacén de claves del servidor de backend con el FQDN correcto y un certificado válido y completo cadena:
- Si no tienes un certificado de servidor backend con el FQDN correcto, luego, obtendrás el certificado correspondiente de una AC (autoridad certificadora) correspondiente.
Valide que dispone de 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 la hoja o un certificado de entidad idéntico al nombre de host especificados en el extremo de destino, actualiza el almacén de claves del backend con el la cadena de certificados completa.
Servidor de backend correcto
Actualiza el extremo de destino con el nombre de host del servidor de backend correcto:
- Si el nombre del host se especificó de forma incorrecta en el extremo de destino, actualiza el que el extremo de destino tenga el nombre de host correcto que coincida con el FQDN en el backend certificado de servidor de Google.
Guarda los cambios en el proxy de API.
En el ejemplo anterior, si el nombre de host del servidor backend puedes corregirlo con el FQDN del certificado del servidor de backend que es
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: Certificado o cadena de certificados incorrectos o incompletos que presentó el servidor de backend
Diagnóstico
- Obtén la cadena de certificados del servidor de backend mediante la ejecución del comando
openssl
con el nombre de host del servidor de backend de la siguiente manera:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
Observa el
Certificate chain
del resultado del comando anterior.Ejemplo de cadena de certificados del servidor de backend 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 - Verifica que tienes la cadena de certificados adecuada y completa como se explica en Valida la cadena de certificados.
Si no tienes la cadena de certificados válida y completa del servidor backend, esa es la causa del problema.
En la cadena de certificados del servidor de backend de muestra que aparece arriba, el certificado raíz es que faltaban. Por lo tanto, verás 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 tienes 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, ve a Se debe recopilar 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, reúne la siguiente información de diagnóstico y comunícate con el equipo de asistencia de Apigee Edge:
- Si eres un usuario de la nube pública, proporciona la siguiente información:
- Nombre de la organización
- Nombre del entorno
- Nombre del proxy de API
- Completa el comando
curl
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 un usuario de la Nube privada, proporciona la siguiente información:
- Se observó un mensaje de error completo
- Paquete de proxy de API
- Archivo de registro que muestra el error
- Registros del procesador de mensajes
/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 Message Processor.
- Resultado de Obtén todos los certificados para una API de almacén de claves o almacén de confianza y también los detalles del cada certificado obtenido mediante Obtener detalles del certificado desde un almacén de claves o una API de Truststore
Referencias
- Certificado Cadena de confianza
- Comando OpenSSL