Gerar e configurar um certificado SSL para autenticação de backend - Amazon API Gateway

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerar e configurar um certificado SSL para autenticação de backend

É possível usar o API Gateway para gerar um certificado SSL e, depois, usar sua chave pública no backend para verificar se as solicitações HTTP para seu sistema backend são provenientes do API Gateway. Isso permite que o backend HTTP controle e aceite apenas solicitações provenientes do Amazon API Gateway, mesmo que o backend esteja acessível ao público.

nota

Alguns servidores de backend podem não ser compatíveis com a autenticação de cliente SSL como o API Gateway e retornar um erro de certificado SSL. Para obter uma lista de servidores de backend incompatíveis, consulte Notas importantes do Amazon API Gateway.

Os certificados SSL gerados pelo API Gateway são autoassinados, e somente a chave pública de um certificado é visível no console do API Gateway ou por meio das APIs.

Gerar um certificado de cliente usando o console do API Gateway

  1. Abra o console do API Gateway em https://console.aws.amazon.com/apigateway/.

  2. Escolha uma API REST.

  3. No painel de navegação principal, selecione Certificados do cliente.

  4. No painel Certificados do cliente, escolha Gerar certificado.

  5. (Opcional) Em Description (Descrição), insira uma descrição.

  6. Selecione Gerar certificado para gerar o certificado. O API Gateway gera um novo certificado e retorna o novo GUID de certificado, juntamente com a chave pública codificada em PEM.

Agora, você está pronto para configurar uma API para usar o certificado.

Configurar uma API para usar certificados SSL

Essas instruções pressupõem que você já tenha concluído o Gerar um certificado de cliente usando o console do API Gateway.

  1. No console do API Gateway, crie ou abra uma API para a qual você deseja usar o certificado de cliente. Certifique-se de que a API tenha sido implantada em um estágio.

  2. No painel de navegação principal, selecione Estágios.

  3. Na seção Detalhes do estágio, selecione Editar.

  4. Em Certificado do cliente, selecione um certificado.

  5. Escolha Save changes (Salvar alterações).

    Se a API tiver sido implantada anteriormente no console do API Gateway, será necessário reimplantá-la para que as alterações entrem em vigor. Para obter mais informações, consulte Reimplantar uma API REST em um estágio.

Depois que um certificado for selecionado para a API e salvo, o API Gateway usará esse certificado para todas as chamadas para integrações HTTP em sua API.

Testar chamada para verificar a configuração de certificado do cliente

  1. Escolha um método de API. Selecione a guia Test (Testar). Talvez seja necessário escolher o botão de seta para a direita para mostrar a guia Testar.

  2. Em Certificado do cliente, selecione um certificado.

  3. Escolha Test (Testar).

O API Gateway apresenta o certificado SSL escolhido para que o backend HTTP autentique a API.

Configurar um servidor HTTPS de backend para verificar o certificado do cliente

Estas instruções pressupõem que você já tenha concluído o Gerar um certificado de cliente usando o console do API Gateway e feito download de uma cópia do certificado do cliente. Você pode baixar um certificado de cliente chamando clientcertificate:by-id da API REST do API Gateway ou get-client-certificate da AWS CLI.

Antes de configurar um servidor HTTPS de backend para verificar o certificado SSL do cliente do API Gateway, é necessário ter obtido a chave privada codificada por PEM e um certificado de servidor fornecido por uma autoridade de certificação confiável.

Se o nome de domínio do servidor for myserver.mydomain.com, o valor CNAME do certificado do servidor deverá ser myserver.mydomain.com ou *.mydomain.com.

Entre as autoridades de certificação aceitas estão Let's Encrypt ou um dos Autoridades de certificado compatíveis com o API Gateway para integrações HTTP e de proxy HTTP.

Como exemplo, suponha que o arquivo de certificado do cliente é apig-cert.pem e que a chave privada do servidor e os arquivos de certificado são server-key.pem e server-cert.pem, respectivamente. Para um servidor Node.js no backend, você pode configurar o servidor de forma semelhante à seguinte:

var fs = require('fs'); var https = require('https'); var options = { key: fs.readFileSync('server-key.pem'), cert: fs.readFileSync('server-cert.pem'), ca: fs.readFileSync('apig-cert.pem'), requestCert: true, rejectUnauthorized: true }; https.createServer(options, function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(443);

Para um aplicativo node-express, você pode usar os módulos client-certificate-auth para autenticar solicitações de clientes com certificados codificados em PEM.

Para outros servidores HTTPS, consulte a documentação do servidor.

Girar um certificado de cliente prestes a expirar

O certificado do cliente gerado pelo API Gateway é válido por 365 dias. Você deve girar o certificado antes que um certificado de cliente em um estágio de API expire, para evitar o tempo de inatividade da API. Você pode verificar a data de validade do certificado chamando o clientCertificate:by-id da API REST do API Gateway ou o comando da AWS CLI get-client-certificate e inspecionando a propriedade expirationDateretornada.

Para alternar um certificado de cliente, faça o seguinte:

  1. Para gerar um certificado de cliente, chame clientcertificate:generate da API REST do API Gateway ou o comando da AWS CLI de generate-client-certificate. Neste tutorial, pressupomos que o novo ID de certificado do cliente é ndiqef.

  2. Atualize o servidor de backend para incluir o novo certificado do cliente. Não remova o certificado de cliente existente ainda.

    Alguns servidores podem exigir uma reinicialização para concluir a atualização. Consulte a documentação do servidor para ver se você deve reiniciá-lo durante a atualização.

  3. Para atualizar o estágio da API para usar o novo certificado do cliente, chame stage: update da API REST do API Gateway, com o novo ID de certificado do cliente (ndiqef):

    PATCH /restapis/{restapi-id}/stages/stage1 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170603T200400Z Authorization: AWS4-HMAC-SHA256 Credential=... { "patchOperations" : [ { "op" : "replace", "path" : "/clientCertificateId", "value" : "ndiqef" } ] }

    ou chame o comando da CLI update-stage.

  4. Atualize o servidor de backend para remover o certificado antigo.

  5. Para excluir o certificado antigo do API Gateway, chame clientcertificate:delete da API REST do API Gateway, especificando o clientCertificateId (a1b2c3) do certificado antigo:

    DELETE /clientcertificates/a1b2c3

    ou chamando o comando da CLI delete-client-certificate:

    aws apigateway delete-client-certificate --client-certificate-id a1b2c3

Para alternar um certificado de cliente no console para uma API implantada anteriormente:

  1. No painel de navegação principal, selecione Certificados do cliente.

  2. No painel Certificados do cliente, selecione Gerar certificado.

  3. Abra a API para a qual você deseja usar o certificado do cliente.

  4. Escolha Stages (Estágios) na API selecionada e selecione um estágio.

  5. Na seção Detalhes do estágio, selecione Editar.

  6. Em Certificado do cliente, selecione o novo certificado.

  7. Para salvar as configurações, selecione Salvar alterações.

    Será necessário implantar a API novamente para que as alterações entrem em vigor. Para obter mais informações, consulte Reimplantar uma API REST em um estágio.