Obtenha certificados TLS: um exemplo

Este tópico destina-se apenas a ser um exemplo. Explica como obter um certificado TLS da autoridade de certificação (AC) Let's Encrypt. Estes passos são fornecidos principalmente como um exemplo a seguir se não tiver outra forma pronta de obter um par de certificado/chave autorizado por uma AC. O exemplo mostra como gerar certificados usando a AC Let's Encrypt, o cliente Certbot e o Cloud DNS da Google Cloud Platform.

Onde pode usar estes certificados

Tem de fornecer certificados TLS para gateways de entrada do tempo de execução expostos fora do cluster.

Consulte também Ligações externas.

Requisitos

Precisa de um nome de domínio obtido através de uma entidade de registo de nomes de domínios. Pode registar um nome de domínio através do Google Domains ou de outra entidade de registo de domínios à sua escolha.

Configure o Cloud DNS

Para obter certificados TLS autorizados, tem de ter um nome de domínio qualificado. Os passos seguintes explicam como usar o Google Cloud DNS para obter um nome de domínio e gerir os servidores de domínio.
  1. Abra a consola do Google Cloud e inicie sessão na sua conta.
  2. Selecione o projeto onde o Apigee Hybrid está instalado.
  3. Se ainda não o fez, ative a API Cloud DNS. Consulte o artigo Ativar APIs.
  4. Crie um endereço IP estático:
    • Se estiver no GKE, siga as instruções em Configure endereços IP externos estáticos para criar endereços IP estáticos que os processos externos podem usar para comunicar com a entrada do tempo de execução híbrido. Pode atribuir qualquer nome ao endereço, por exemplo: apigee-hybrid-runtime. Quando terminar, vai usar o número de IP na configuração do cluster no passo seguinte. Por exemplo: 34.66.75.196
    • Se estiver no Google Distributed Cloud, siga as instruções em Planeie endereços IP e Crie um cluster de utilizadores para criar um endereço IP estático.
  5. Aceda ao IP externo que acabou de reservar.
  6. Crie um conjunto de registos para o ponto final de entrada do Istio de tempo de execução. Este é o endereço para fazer chamadas API para o gateway híbrido. Introduza o IP externo que obteve no passo anterior e adicione um prefixo ao nome do domínio, como example-endpoint. Para obter instruções, consulte o artigo Crie um novo registo.
    1. Crie uma zona pública gerida. Para ver instruções, consulte o artigo Crie uma zona pública gerida.
    2. Crie um novo conjunto de registos com:
      • Nome DNS: o nome do ponto final com o qual as chamadas de API externas vão comunicar, como api-services ou example-endpoint
      • Tipo de registo de recurso: A
      • TTL e Unidade de TTL: aceite as predefinições
      • Endereço IP: o IP estático que criou.
  7. A vista Detalhes da zona apresenta quatro servidores DNS como os dados NS para a sua nova zona. Copie os dados do registo de DNS, conforme apresentado no exemplo seguinte:

  8. Regresse à página do domínio na sua entidade de registo (por exemplo, Google Domains).
  9. Selecione o domínio.
  10. Selecione DNS.
  11. Na secção Servidores de nomes, clique em Editar.
  12. Introduza os servidores de nomes de domínio que copiou da página do Cloud DNS dos serviços de rede. Por exemplo:

Agora, o Google Cloud DNS vai gerir os registos de DNS do seu domínio.

Instale o Certbot numa VM

Agora que tem o Cloud DNS configurado para gerir os servidores de domínio, vai instalar o cliente Certbot com o plug-in dns_google numa VM do Google Cloud. O cliente permite-lhe obter certificados autorizados para o seu domínio a partir de um ponto final do Let's Encrypt.

  1. Abra a Google Cloud Console e inicie sessão com a conta que criou no Passo 1: crie uma conta do Google Cloud.
  2. Selecione o projeto que criou no passo 2: crie um projeto do Google Cloud.
  3. Selecione IAM e administrador > Contas de serviço.

    A vista Contas de serviço apresenta 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 vista.

    A vista Detalhes da conta de serviço é apresentada.

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

    Opcionalmente, pode adicionar uma descrição no campo Descrição da conta de serviço. As descrições são úteis para relembrar para que é usada uma determinada conta de serviço.

  6. Clique em Criar.

    O Google Cloud cria uma nova conta de serviço e apresenta a vista Autorizações da conta de serviço. Use esta vista para atribuir uma função à sua nova conta de serviço.

  7. Clique na lista pendente Selecionar uma função.
  8. Selecione a função Proprietário do projeto.
  9. Clique em Continuar.
  10. Clique em Concluído.
  11. Na Google Cloud consola, selecione Compute Engine > Instâncias de VM.
  12. Crie uma instância de VM denominada certmanager.
  13. Na secção Disco de arranque, escolha CentOS7 e 20 GB para o unidade persistente SSD.
  14. Defina a conta de serviço para a que criou acima.
  15. Instale o Certbot e o plug-in dns_google na máquina e execute o cliente 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
      

    Por 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, pode encontrar os ficheiros de certificado autorizado e chave privada neste diretório: cd /etc/letsencrypt/live/your_domain_name/

    Por exemplo:

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

    Por 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"

    Em alternativa, se usar segredos 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 as alterações à configuração do envs:

    Execute o comando helm upgrade para cada ambiente que quer atualizar.

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

    Implemente e teste um proxy. Consulte o artigo Crie o seu primeiro proxy de API: vista geral.