Fallo de establecimiento de comunicación de TLS de backend HTTPS

Descubra cómo solucionar los fallos de establecimiento de comunicación de TLS del backend HTTPS al crear despliegues de API con el servicio API Gateway.

Cuando un despliegue de API utiliza un backend HTTPS, un fallo de establecimiento de comunicación de TLS puede parar la solicitud antes de que el servicio backend procese cualquier tráfico HTTP. El fallo suele significar que API Gateway no puede validar la cadena de certificados o la configuración de TLS que presenta el backend.

Emitir síntomas

Es posible que vea uno o más de los siguientes síntomas:

  • La URL de backend es correcta, pero la solicitud falla antes de que el servicio de backend procese la solicitud HTTP.

  • El log de ejecución muestra el código de log httpBackend.requestError.

  • El mensaje de registro de ejecución termina con HANDSHAKE_FAILED.

  • Las solicitudes fallan cuando el servicio backend utiliza una autoridad de certificación (CA) privada, un grupo de autoridades de certificación personalizado o una cadena de certificados en los que el gateway de API no confía.

Causas posibles

Los fallos de establecimiento de comunicación de TLS de backend HTTPS suelen tener una de las siguientes causas:

  • El certificado de backend ha caducado, está incompleto o no es válido.

  • Falta un certificado intermedio en la cadena de certificados backend.

  • La cadena de certificados utiliza una CA que no está en el almacén de confianza de API Gateway.

  • El listener de TLS de backend está mal configurado, incluida la configuración de TLS no soportada o incorrecta.

  • La sesión de TLS falla antes de que API Gateway pueda enviar la solicitud HTTP al backend.

Mensajes del registro de revisiones

Repita la solicitud a través de API Gateway y, a continuación, revise el log de ejecución para la misma solicitud.

Utilice el siguiente comando para repetir la solicitud:

  • curl -i https://<gateway-hostname>/<deployment-path-prefix>/<api-route-path>

En Logging, compruebe los siguientes detalles del log:

  • Capture opc-request-id para la solicitud fallida.

  • Abra el log de ejecución para la misma solicitud.

  • Confirme si el código de log es httpBackend.requestError.

  • Confirme si el mensaje finaliza con HANDSHAKE_FAILED.

El siguiente mensaje de log indica que el establecimiento de comunicación de TLS falló antes de que el gateway enviara la solicitud HTTP al backend:

  • An error occurred whilst sending request to https://<backend-url>: HANDSHAKE_FAILED

Revisión de la configuración de backend HTTPS

Revise la configuración de ruta y backend para la solicitud fallida.

  • Confirme que backend.url apunta al backend HTTPS esperado.

  • Confirme que el listener de backend presenta una cadena de certificados completa.

  • Si el backend utiliza una CA privada o un grupo de CA personalizado, confirme que el almacén de confianza de gateway de API incluye el grupo de CA o CA necesario.

  • Confirme que la configuración del listener de TLS coincide con los requisitos de backend y almacén de confianza HTTPS para el despliegue de API.

Validar el backend HTTPS directamente

Desde un sistema que puede acceder directamente al backend, pruebe el listener HTTPS fuera de API Gateway.

Utilice el siguiente comando para inspeccionar el establecimiento de comunicación de TLS:

  • curl -v <backend-url>

Revise los resultados de la prueba directa para obtener los siguientes detalles:

  • Cadena de certificados que presenta el listener de backend.

  • Las fechas de caducidad del certificado y la cobertura del nombre de host.

  • Configuración de cifrado y protocolo TLS.

  • Cualquier error de validación de certificado que se produzca antes de que se envíe la solicitud HTTP.

Solución de problemas de TLS de backend HTTPS

Aplique la corrección que coincida con el problema que ha encontrado.

  • Si el certificado de backend caducó, está incompleto o no es válido, sustituya o corrija la cadena de certificados.

  • Si a la cadena de certificados le falta un certificado intermedio, configure el listener de backend para presentar la cadena completa.

  • Si el backend utiliza una CA privada o un grupo de CA personalizado, agregue la CA o el grupo de CA necesarios al almacén de confianza de gateway de API.

  • Si el listener de backend utiliza valores de TLS incorrectos, actualice la configuración del listener y vuelva a intentar la solicitud.

  • Si el log de ejecución muestra httpBackend.requestError con HANDSHAKE_FAILED, solucione los problemas del listener HTTPS antes de cambiar la configuración de la ruta de gateway de API.

Verificación de la conectividad de backend HTTPS

Después de corregir la configuración de TLS, verifique que el despliegue de API pueda acceder al backend HTTPS.

  • Envíe la misma solicitud a través de API Gateway.

  • Confirme que el log de ejecución ya no muestra httpBackend.requestError con HANDSHAKE_FAILED.

  • Confirme que el servicio backend recibe y procesa la solicitud HTTP.

Para obtener más información

Para obtener más información, consulte: