Por que o certificado incorreto foi retornado ao invocar meu nome de domínio personalizado do API Gateway?

Data da última atualização: 19/01/2023

Tentei fazer uma solicitação de API para meu nome de domínio personalizado do Amazon API Gateway, mas o certificado incorreto foi retornado. Como corrijo isso?

Breve descrição

Há dois tipos de nomes de domínio personalizados que você pode criar para as APIs do API Gateway: regional ou (somente para APIs REST) otimizado para borda.

Para nomes de domínio personalizados regionais, o API Gateway cria um nome de domínio regional. Você deve configurar um registro DNS para mapear o nome de domínio personalizado para o nome do host, semelhante a “d-example.execute-api.<region>.amazonaws.com”.

Para nomes de domínio personalizados otimizados para borda, o API Gateway cria uma distribuição do Amazon CloudFront. Você deve configurar um registro DNS para mapear o nome de domínio personalizado para o nome de distribuição do CloudFront, semelhante a “distribution-id.cloudfront.net”.

No cenário a seguir, o certificado SSL *.example.com ou www.example.com foi carregado para o nome de domínio personalizado www.example.com. Uma solicitação de API para www.example.com retorna um erro semelhante ao seguinte:

Em um navegador:

“Esse servidor não conseguiu provar que é www.example.com; seu certificado de segurança é de *.execute-api.us-east-1.amazonaws.com. Isso pode ser causado por uma configuração incorreta ou por um invasor interceptando sua conexão.”

De curl:

“curl: (60) SSL: nenhum nome de requerente alternativo do certificado corresponde ao nome do host de destino 'www.example.com'. curl falhou ao verificar a legitimidade do servidor e, portanto, não conseguiu estabelecer uma conexão segura com ele. Para saber mais sobre essa situação e como corrigi-la, acesse a página da Web mencionada acima. “

Resolução

Certifique-se de que o registro CNAME ou A do nome de domínio personalizado aponte para o nome de domínio do API Gateway e não para o URL de estágio do API Gateway.

1.    Execute o seguinte comando openssl para verificar se o certificado SSL é retornado pelo domínio personalizado:

openssl s_client -connect www.example.com:443 -servername www.example.com

Exemplo de saída:

subject=/CN=*.execute-api.us-east-1.amazonaws.com

2.    Execute o seguinte comando dig no domínio personalizado:

dig www.example.com

A saída do comando dig tem um registro CNAME apontando para o URL do estágio do API Gateway ou um registro A apontando para o endereço IP.

3.    Verifique o registro de DNS do domínio www.example.com com seu registrador de domínio para determinar para onde ele está apontando. Se o seu domínio estiver registrado no Amazon Route 53, consulte Verificação das respostas de DNS do Route 53.

4.    Para confirmar se os registros de DNS estão mapeados corretamente, abra o console do API Gateway. No painel de navegação, escolha Custom domain names (Nomes de domínio personalizados) e, em seguida, escolha seu domínio personalizado.

5.    Em Domain details (Detalhes do domínio), escolha Configuration (Configuração) e, em seguida, verifique API Gateway domain name (Nome de domínio do API Gateway). O nome de domínio personalizado deve ser mapeado para o nome de domínio do API Gateway. Nomes de domínio personalizados regionais usam um prefixo semelhante a “d-example.execute-api.<region>.amazonaws.com”. Nomes de domínio personalizados otimizados para borda usam um prefixo semelhante a “distribution-id.cloudfront.net”.

6.    Se o registro CNAME apontar para o URL do estágio do API Gateway em vez de para o nome de domínio do API Gateway, atualize o registro CNAME. Altere o registro CNAME para apontar para o nome de domínio do API Gateway em vez de para o URL do estágio. Se o seu nome de domínio personalizado estiver registrado com terceiros, entre em contato com o registrador do domínio. Se o seu nome de domínio personalizado estiver registrado no Route 53, consulte Editar registros.

7.    Se você invocou a API em um endpoint da Amazon Virtual Private Cloud (Amazon VPC), verifique o mapeamento de registros CNAME ou A para obter o nome de domínio personalizado. Se o DNS privado estiver ativado, a solicitação da API retornará um erro 4xx. Como a solicitação da API é roteada pelo endpoint da VPC e mapeada para um registro CNAME ou A, a solicitação falha.