Quiero resolver los problemas relacionados con los certificados SSL vencidos y autofirmados generados por Amazon API Gateway que instalé en mi sistema de backend.
Resolución
Prueba de una integración de proxy HTTP
Utiliza la consola de API Gateway para probar los certificados SSL incorrectos. Para obtener una lista de los certificados SSL incorrectos, consulta badssl.com en el sitio web de Bad SSL.
Sigue estos pasos:
- Crea un recurso que se llame /selfsigned.
- Crea un método GET en el recurso.
- Configura una integración de proxy HTTP con la URL.
- Abre la consola de API Gateway.
- Prueba la API.
- Repite cada uno de los pasos anteriores con un recurso denominado /expiredcert y, a continuación, con otro recurso denominado /untrustedRootCA.
En el caso del recurso denominado /selfsigned, recibirás el siguiente mensaje de 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»
En el caso del recurso denominado /expiredcert, recibirás el siguiente mensaje de 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»
Para el recurso denominado /untrustedRootCA, recibirás el siguiente mensaje de 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»
Resolución de errores de configuración
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
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 objetivo. El certificado adjunto al equilibrador de carga de red debe cumplir todos los requisitos.
Un equilibrador de carga de red no realiza la validación del certificado durante el protocolo de enlace SSL con el objetivo. El equilibrador de carga de red acepta los certificados vencidos o autofirmados que hayas instalado en las instancias de objetivo. El equilibrador de carga de red y los grupos objetivo están vinculados dentro de una nube virtual privada (VPC). Si el equilibrador de carga de red utiliza un agente de escucha de TCP, el protocolo de enlace TLS se produce de principio a fin. En este caso, la aplicación de backend debe cumplir los requisitos de SSL.
API Gateway admite la indicación del nombre del 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 autofirmado o privado que no emitió una autoridad de certificación (CA), recibirás el siguiente mensaje de 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»
Para resolver este problema, ejecuta el siguiente comando update-integration de la AWS CLI y define insecureSkipVerification en true en el objeto tlsConfig de la integración:
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"
Nota: Sustituye EXAMPLE-REST-API-ID y EXAMPLE-RESOURCE-ID por tus valores.
Información relacionada
Generación y configuración de un certificado SSL para la autenticación de backend en API Gateway