Quero resolver problemas com certificados SSL autoassinados e expirados gerados pelo Amazon API Gateway que instalei no meu sistema de backend.
Resolução
Teste a integração do proxy HTTP
Use o console do API Gateway para testar certificados SSL incorretos. Para obter uma lista de certificados SSL incorretos, consulte badssl.com no site Bad SSL.
Conclua as etapas a seguir:
- Crie um recurso chamado /selfsigned.
- Crie um método GET no recurso.
- Configure uma integração de proxy HTTP com a URL.
- Abra o console do API Gateway.
- Teste a API.
- Repita cada uma das etapas anteriores com um recurso chamado /expiredcert e, em seguida, outro recurso chamado /untrustedRootCA.
Para o recurso chamado /selfsigned, você recebe a seguinte mensagem de erro:
“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”
Para o recurso chamado /expiredcert, você recebe a seguinte mensagem de erro:
“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 o recurso chamado /untrustedRootCA, você recebe a seguinte mensagem de erro:
“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”
Resolver erros de configuração
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Quando um Network Load Balancer tem um receptor TLS, o Network Load Balancer executa uma terminação TLS e cria outra conexão com o destino. O certificado anexado ao Network Load Balancer deve atender a todos os requisitos.
Um Network Load Balancer não realiza a validação do certificado durante o handshake SSL com o alvo. O Network Load Balancer aceita certificados expirados ou autoassinados que você instalou nas instâncias de destino. O Network Load Balancer e os grupos-alvo estão vinculados a uma nuvem privada virtual (VPC). Se o Network Load Balancer estiver usando um receptor TCP, o handshake TLS acontecerá de ponta a ponta. Nesse caso, a aplicação de backend deve atender aos requisitos de SSL.
O API Gateway oferece suporte à indicação de nome de servidor (SNI) durante um handshake SSL por meio de uma integração de link VPC.
Se o Network Load Balancer de backend tiver um certificado autoassinado ou privado que uma autoridade de certificação (CA) não emitiu, você receberá a seguinte mensagem de erro:
“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 esse problema, execute o seguinte comando update-integration da AWS CLI e defina insecureSkipVerification como verdadeiro no objeto tlsConfig da integração:
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"
Observação: substitua EXAMPLE-REST-API-ID e EXAMPLE-RESOURCE-ID por seus valores.
Informações relacionadas
Gere e configure um certificado SSL para autenticação de backend no API Gateway