¿Cómo soluciono los errores con los certificados SSL que genera API Gateway?
Tengo problemas con los certificados SSL autofirmados y caducados instalados en mi sistema de backend. ¿Cómo puedo corregir estos errores?
Descripción breve
Cuando Amazon API Gateway realiza un protocolo de enlace SSL con el backend, espera que el backend brinde certificados obtenidos de emisores de confianza. API Gateway espera que los certificados sean válidos y no hayan caducado. API Gateway también espera que la cadena de confianza esté intacta. Esto significa que API Gateway espera que el certificado contenga una autoridad de certificación (CA) raíz, las CA intermedias y los detalles del certificado principal. Con esta información, API Gateway puede completar la validación del certificado al seguir la cadena de certificados.
Resolución
Probar la integración de proxy HTTP
Para familiarizarse con las integraciones de proxy HTTP, pruebe los certificados SSL incorrectos desde la consola de API Gateway. Para obtener más información sobre los certificados SSL incorrectos y para probarlos, consulte el sitio web Bad SSL.
1. Cree un recurso llamado “/selfsigned” con un método GET. A continuación, configure una integración de proxy HTTP con la URL https://self-signed.badssl.com/.
Desde la consola de API Gateway, pruebe la API. Aparece el siguiente error:
Thu Dec 15 16:05:05 UTC 2022 : Sending request to https://self-signed.badssl.com/ Thu Dec 15 16:05:05 UTC 2022 : Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
2. Cree un recurso llamado “/expiredcert” con un método GET. A continuación, configure una integración de proxy HTTP con la URL https://expired.badssl.com/.
Desde la consola de API Gateway, pruebe la API. Aparece el siguiente error:
Thu Dec 15 16:06:02 UTC 2022 : Sending request to https://expired.badssl.com/ Thu Dec 15 16:06:02 UTC 2022 : Execution failed due to configuration error: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed
3. Cree un recurso llamado “/untrustedRootCA” con un método GET. Configure una integración de proxy HTTP con la URL https://untrusted-root.badssl.com/.
Desde la consola de API Gateway, pruebe la API. Aparece el siguiente error:
Thu Dec 15 16:06:28 UTC 2022 : Sending request to https://untrusted-root.badssl.com/ Thu Dec 15 16:06:28 UTC 2022 : Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Integración de enlaces de VPC
Con la integración de enlaces de VPC, API Gateway realiza la validación de certificados con el siguiente salto que realiza la terminación de TLS.
Cuando un equilibrador de carga de red tiene un agente de escucha de TLS, el equilibrador de carga de red realiza una terminación de TLS y crea otra conexión con el destino. El certificado adjunto al equilibrador de carga de red debe cumplir con todos los requisitos. Un equilibrador de carga de red no valida el certificado durante el protocolo de enlace SSL con el destino. El equilibrador de carga de red acepta certificados caducados o autofirmados que se encuentren instalados en las instancias de destino. El equilibrador de carga de red y los grupos de destino se encuentran enlazados a una VPC y las comunicaciones son seguras. Si el equilibrador de carga de red utiliza un agente de escucha de TCP, el protocolo de enlace de TLS se produce de extremo a extremo. En estos casos, la aplicación de backend debe cumplir con los requisitos de SSL.
API Gateway admite la indicación de nombre de servidor (SNI) durante un protocolo de enlace SSL a través de una integración de enlaces de VPC.
Si el equilibrador de carga de red del backend tiene un certificado privado o autofirmado que no ha emitido una CA, recibirá el siguiente error:
Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
La solución alternativa para el error de ejecución fallida consiste en establecer insecureSkipVerification en true (verdadero) en el objeto tlsConfig de la integración:
Nota: Sustituya EXAMPLE-REST-API-ID y EXAMPLE-RESOURCE-ID por sus valores.
aws apigateway update-integration --rest-api-id EXAMPLE-REST-API-ID --resource-id EXAMPLE-RESOURCE-ID --http-method GET --patch-operations "op='replace',path='/tlsConfig/insecureSkipVerification',value=true"
Información relacionada
Generar y configurar un certificado SSL para la autenticación de backend
Autoridades de certificación compatibles con API Gateway para integraciones de HTTP y proxy HTTP
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años