Receber certificados TLS: um exemplo

Este tópico é apenas um exemplo. Ele explica como conseguir um certificado TLS da autoridade de certificação (CA, na sigla em inglês) Let's Encrypt (em inglês). Essas etapas são fornecidas principalmente como um exemplo a ser seguido se você não tiver outra maneira pronta de obter um par de certificado/chave autorizado por uma CA. No exemplo, mostramos como gerar certificados usando a CA Let's Encrypt, o cliente Certbot e o Cloud DNS do Google Cloud Platform.

Onde usar esses certificados

É preciso fornecer certificados TLS para gateways de entrada do ambiente de execução exposto fora do cluster.

Consulte também Conexões externas.

Requisitos

Você precisará de um nome de domínio proveniente de um registrador de nomes de domínio. É possível registrar um nome de domínio por meio do Google Domains ou outro registro de domínios da sua escolha.

Configurar o Cloud DNS

Para conseguir os certificados TLS autorizados, é necessário ter um nome de domínio qualificado. As etapas a seguir explicam como usar o Google Cloud DNS para conseguir um nome de domínio e gerenciar seus servidores de domínio.
  1. Abra o console do Google Cloud e faça login na sua conta.
  2. Selecione o projeto em que a Apigee híbrida está instalada.
  3. Se você ainda não tiver feito isso, ative a API Cloud DNS. Consulte Como ativar APIs.
  4. Crie um endereço IP estático:
    • Se você estiver no GKE, siga as instruções em Configurar endereços IP externo estáticos para criar um endereço IP estático que os processos externos possam usar para se comunicar com a entrada de ambiente de execução híbrido. Você pode dar o nome que quiser ao nome, por exemplo: apigee-hybrid-runtime. Quando terminar, você usará o número do IP na configuração do cluster na próxima etapa. Por exemplo: 34.66.75.196
    • Se você estiver no Google Distributed Cloud, siga as instruções em Planejar endereços IP e Criar um cluster de usuários para criar um endereço IP estático.
  5. Receba o IP externo que você acabou de reservar.
  6. Crie um conjunto de registros para o endpoint de entrada do Istio do ambiente de execução. Esse é o endereço para fazer chamadas de API para o gateway híbrido. Insira o IP externo que você recebeu na etapa anterior e adicione um prefixo ao nome do domínio, como example-endpoint. Para mais instruções, consulte Criar um novo registro.
    1. Crie uma zona pública gerenciada. Para mais instruções, consulte Criar uma zona pública gerenciada.
    2. Crie um novo conjunto de registros com:
      • Nome do DNS: o nome das chamadas de API externas do endpoint que se comunicarão, como api-services ou example-endpoint
      • Tipo de registro de recurso: A
      • TTL e Unidade TTL: aceitar padrões
      • IP Addhook: o IP estático que você criou.
  7. A visualização Detalhes da zona listará quatro servidores DNS como os dados NS da nova zona. Copie os dados do registro DNS, conforme mostrado no exemplo a seguir:

  8. Retorne à página do seu domínio no registrador, por exemplo, o Google Domains.
  9. Selecione seu domínio.
  10. Selecione DNS.
  11. Na seção "Servidores de nomes", clique em Editar.
  12. Insira os servidores de nomes de domínio que você copiou da página Serviços de rede do Cloud DNS. Por exemplo:

Agora o Google Cloud DNS gerenciará os registros DNS do seu domínio.

Instalar o Certbot em uma VM

Agora que o Cloud DNS está configurado para gerenciar os servidores de domínio, instale o cliente Certbot com o plug-in dns_google em uma VM do Cloud. O cliente permite que você receba certificados autorizados para seu domínio a partir de um endpoint Let's Encrypt.

  1. Abra o Console do Google Cloud e faça login com a conta que você criou na Etapa 1: criar uma conta do Google Cloud.
  2. Selecione o projeto que você criou na Etapa 2: criar um projeto do Google Cloud.
  3. Selecione IAM e administrador > Contas de serviço.

    A visualização "Contas de serviço" exibe uma lista das contas de serviço do projeto.

  4. Para criar uma nova conta de serviço, clique em +Criar conta de serviço na parte superior da visualização.

    A visualização Detalhes da conta de serviço é exibida.

  5. No campo Nome da conta de serviço, insira o nome da conta de serviço.

    Se quiser, adicione uma descrição no campo Descrição da conta de serviço. As descrições são úteis para lembrar você sobre como uma conta de serviço específica é usada.

  6. Clique em Criar

    O Google Cloud cria uma nova conta de serviço e exibe a visualização de permissões da conta de serviço. Use essa visualização para atribuir um papel à sua nova conta de serviço.

  7. Clique na lista suspensa Selecionar um papel.
  8. Selecione o papel Proprietário do projeto.
  9. Clique em Continuar.
  10. Clique em Concluído.
  11. No Console do Google Cloud, selecione Compute Engine > Instâncias de VM.
  12. Crie uma instância de VM chamada certmanager.
  13. Na seção "Disco de inicialização", escolha CentOS7 e 20 GB para a unidade permanente SSD.
  14. Defina a conta de serviço como a que você criou acima.
  15. Instale o Certbot e o plug-in dns_google na máquina e execute o cliente do Certbot:
      sudo su -
      yum -y install yum-utils
      yum install certbot -y
      yum install certbot-dns-google -y
      certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
      

    Exemplo:

    sudo su -
    yum -y install yum-utils
    yum install certbot -y
    yum install certbot-dns-google -y
    certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
  16. Agora é possível encontrar o certificado autorizado e os arquivos de chave privada nesse diretório: cd /etc/letsencrypt/live/your_domain_name/

    Exemplo:

    cd /etc/letsencrypt/live/apigee-hybrid-docs.net
    ls
      cert.pem  chain.pem  fullchain.pem  privkey.key  README
  17. Copie os arquivos fullchain.pem e privkey.key para sua máquina local.
  18. Opcional: crie um secret do Kubernetes com o certificado/par de chaves. Consulte as instruções na Opção 2: Secret do Kubernetes em Como configurar o TLS e o mTLS na entrada do Istio.
  19. Atualize seu arquivo de modificação para apontar para o certificado e a chave privada.

    Exemplo:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: my-env-group
        sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
        sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.key"

    Ou se estiver usando o secrets do Kubernetes:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: my-env-group
        tlsMode: SIMPLE  # Note: SIMPLE is the default, MUTUAL is also an available value.
        sslSecret: myorg-test-policy-secret"
    
    ...  
  20. Aplique mudanças na configuração de envs:

    Execute o upgrade do helm para cada ambiente que você quer atualizar.

    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
    -f OVERRIDES_FILE.yaml
    
  21. Testar a configuração

    Implantar e testar um proxy Consulte Visão geral do proxy de sua API.