Como soluciono um erro 502: “The request could not be satisfied” (Não foi possível atender à solicitação)” do CloudFront?

6 minuto de leitura
0

Configurei uma distribuição do Amazon CloudFront com um domínio personalizado. Ao solicitar o domínio alternativo de registro de nome canônico (CNAME) pelo CloudFront, recebo uma resposta de erro 502 com a mensagem “The request could not be satisfied” (Não foi possível atender à solicitação).

Breve descrição

Um erro 502 ocorre quando o CloudFront não consegue se conectar à origem. Consulte as seções a seguir para saber as causas do erro e como solucioná-lo.

Resolução

O CloudFront não consegue estabelecer uma conexão TCP com o servidor de origem

Por padrão, o CloudFront se conecta à origem pela porta 80 (para HTTP) e pela porta 443 (para HTTPS). Se a origem não permitir tráfego por essas portas ou bloquear a conexão do endereço IP do CloudFront, a conexão TCP falhará. A falha produz um erro 502. Para resolver o erro, confirme se a configuração Protocol (Protocolo) da distribuição do CloudFront está definida para a porta correta para conexões HTTP ou HTTPS.

Para testar a conectividade, execute o comando a seguir:

telnet ORIGIN_DOMAIN/ORIGIN_IP PORT

Observação: em ORIGIN_DOMAIN, insira o ID do seu domínio de origem. Em ORIGIN_IP, insira o endereço IP da sua origem. Em PORT, insira o número da porta que você está usando para se conectar à origem.

Ocorreu uma falha na negociação SSL/TLS com o servidor de origem

Se ocorrer uma falha na transação SSL/TLS, a conexão entre o CloudFront e a origem apresentará falha e produzirá um erro 502. Consulte as seções a seguir para conhecer as causas de uma falha de transação SSL/TLS e como resolvê-las.

O certificado SSL não corresponde ao nome do domínio

O certificado SSL na origem deve incluir ou abranger um dos seguintes nomes de domínio:

  • O nome do domínio de origem do campo Common Name (Nome comum) ou do campo Subject Alternative Names (Nome alternativo do assunto) do certificado.
  • O nome de domínio do cabeçalho do host para os cabeçalhos de host recebidos do visualizador que são encaminhados para a origem na distribuição do CloudFront.

Para verificar o Common Name (Nome comum) e os Subject Alternative Names (Nomes alternativos do assunto) do certificado, execute o seguinte comando:

$ openssl s_client -connect DOMAIN:443 -servername SERVER_DOMAIN | openssl x509 -text | grep -E '(CN|Alternative)' -A 2

Observação: em DOMAIN, insira o nome do domínio de origem. Em SERVER_DOMAIN, insira o nome do domínio de origem. Ou, se o cabeçalho do host do visualizador for encaminhado para a origem, em SERVER_DOMAIN, insira o valor do cabeçalho do host de entrada.

Configure a política de cache ou a política de solicitação de origem para incluir o cabeçalho do host se o seguinte for verdadeiro:

  1. O nome comum do certificado SSL ou a rede de área de armazenamento (SAN) inclui o valor do cabeçalho do host do visualizador.
  2. O cabeçalho do host não é encaminhado para a origem.

O certificado de origem expirou, não é confiável ou é autoassinado

O certificado instalado na origem personalizada deve ser assinado por uma autoridade de certificação aprovada. As autoridades de certificação aprovadas pelo CloudFront são encontradas na Mozilla included CA certificate list (Lista de autoridades certificadoras incluídas pela Mozilla) no site da Mozilla.

O CloudFront não oferece suporte a certificados autoassinados para SSL configurado com a origem. Os certificados autoassinados são emitidos pelas próprias organizações ou gerados localmente em um servidor da Web, em vez de serem emitidos por uma autoridade certificadora aprovada.

Para verificar se seu certificado de origem expirou, execute o seguinte comando OpenSSL. Na saída, localize os parâmetros Not Before (Não antes de) e Not After (Não depois de). Confirme se a data e a hora atuais estão dentro do período de validade do certificado.

$ openssl s_client -connect DOMAIN:443 -servername SERVER_DOMAIN | openssl x509 -text | grep Validity -A 3

Observação: em DOMAIN, insira o nome do domínio de origem. Em SERVER_DOMAIN, insira o nome do domínio de origem. Ou, se o cabeçalho do host do visualizador for encaminhado para a origem, em SERVER_DOMAIN, insira o valor do cabeçalho do host de entrada.

A falta de certificados intermediários de autoridades certificadoras ou a ordem incorreta dos certificados intermediários causa falha entre a comunicação HTTPS e a origem. Para verificar a cadeia de certificados, execute o seguinte comando.

$ openssl s_client -showcerts -connect DOMAIN:443 -servername SERVER_DOMAIN

Observação: em DOMAIN, insira o nome de domínio de origem e, em SERVER_DOMAIN, insira o nome de domínio de origem. Ou, se o cabeçalho do host do visualizador for encaminhado para a origem, em SERVER_DOMAIN, insira o valor do cabeçalho do host de entrada.

O pacote de criptografia da origem não é suportado pelo CloudFront

A transação SSL/TLS entre o CloudFront e a origem apresentará falha se não houver um pacote de criptografia comum negociado. Para confirmar se você está usando o pacote de criptografia correto, consulte Protocolos e criptografias compatíveis entre o CloudFront e a origem.

Você também pode usar uma ferramenta SSL Server Test (Teste do servidor SSL) para verificar se o nome do seu domínio de origem está incluído na lista de criptografias compatíveis.

O CloudFront não consegue resolver o endereço IP de origem

Se o CloudFront não conseguir resolver o domínio de origem, ele retornará o erro 502. Para solucionar esse problema, use um comando dig/nslookup para verificar se o domínio de origem resolve para um IP.

Linux:

$ dig ORIGIN_DOMAIN_NAME

Windows:

nslookup ORIGIN_DOMAIN_NAME

Observação: em ORIGIN_DOMAIN_NAME, insira o nome do domínio de origem.

Em caso de sucesso, o comando retornará o IP do nome de domínio de origem. Use uma ferramenta de verificação de DNS para verificar a resolução de DNS em diferentes regiões geográficas.

O erro é causado por uma origem upstream

A origem personalizada definida na distribuição do CloudFront pode ser um proxy, um nome de host da rede de entrega de conteúdo (CDN) ou um balanceador de carga conectado à origem real. Se algum desses serviços intermediários não conseguir se conectar à origem, um erro 502 será retornado ao CloudFront. Para solucionar esse erro, trabalhe com seu provedor de serviços.

Falha na validação da função do Lambda@Edge associada à distribuição do CloudFront

Se a função do Lambda@Edge retornar uma resposta ao CloudFront que não é válida, o CloudFront retornará um erro 502. Para solucionar esse erro, verifique sua função do Lambda@Edge quanto aos seguintes problemas comuns:

  • Objeto JSON retornado
  • Campos obrigatórios ausentes
  • Objeto inválido na resposta
  • Adição ou atualização de cabeçalhos não permitidos ou somente leitura
  • Tamanho máximo do corpo excedido
  • Caracteres ou valores que não são válidos

Para obter mais informações, consulte Testes e depuração das funções do Lambda@Edge.


AWS OFICIAL
AWS OFICIALAtualizada há um ano