Implantar um certificado global gerenciado pelo Google com o Certificate Authority Service

Neste tutorial, mostramos como usar o Gerenciador de Certificados para implantar um certificado global gerenciado pelo Google com o Certificate Authority Service.

Os seguintes balanceadores de carga globais são compatíveis com certificados gerenciados pelo Google com o Certificate Authority Service:

  • Balanceador de carga de aplicativo externo global
  • Balanceador de carga de aplicativo clássico
  • Balanceador de carga de rede de proxy externo global
  • Balanceador de carga de rede de proxy clássico

Para implantar em balanceadores de carga entre regiões ou regionais, consulte:

Objetivos

Nesta seção, mostramos como concluir as seguintes tarefas:

  • Crie um certificado gerenciado pelo Google com o Certificate Authority Service usando o Gerenciador de Certificados.
  • Implante o certificado em um balanceador de carga compatível usando um proxy HTTPS de destino.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho sem custos financeiros.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager, Certificate Authority APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine, Certificate Manager, Certificate Authority APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Ative a API CA Service.
  15. Crie um pool de CAs. É preciso criar e ativar pelo menos uma CA nesse pool de CAs.

Antes de seguir as etapas deste tutorial, observe o seguinte:

  • Os certificados criados com o Certificate Authority Service não são confiáveis publicamente. Para emitir certificados publicamente confiáveis, crie certificados com autorização de DNS ou autorização de balanceador de carga.
  • Se uma política de emissão de certificados estiver em vigor no pool de CA de destino, o provisionamento de certificados poderá falhar por qualquer um dos seguintes motivos:

    • A política de emissão de certificados bloqueou o certificado solicitado. Nesse caso, você não vai receber uma cobrança porque o certificado não foi emitido.
    • A política aplicou mudanças ao certificado que não são compatíveis com o Gerenciador de Certificados. Nesse caso, você vai receber uma cobrança porque o certificado foi emitido, mesmo que não seja totalmente compatível com o Certificate Manager.
  • Para garantir a compatibilidade, configure a política de emissão de certificados do pool de CAs de destino para permitir certificados TLS de servidor de entidade final (folha).

  • Os certificados TLS globais gerenciados pelo Google podem ser configurados para serem emitidos de um pool de CAs em qualquer região.

Funções exigidas

Verifique se você tem os seguintes papéis para concluir as tarefas deste tutorial:

  • Proprietário do Certificate Manager (roles/certificatemanager.owner)

    Necessário para criar e gerenciar recursos do Certificate Manager.

  • Administrador do balanceador de carga do Compute (roles/compute.loadBalancerAdmin) ou Administrador de rede do Compute (roles/compute.networkAdmin)

    Necessária para criar e gerenciar o proxy de destino HTTPS.

  • Administrador do CA Service (roles/privateca.admin)

    Necessária para realizar ações no CA Service.

Para ver mais informações, consulte os seguintes tópicos:

Criar o balanceador de carga

Neste tutorial, presumimos que você já criou e configurou os back-ends, as verificações de integridade, os serviços de back-end e os mapas de URL do balanceador de carga. Se você criou um balanceador de carga de aplicativo externo, anote o nome do mapa de URL, porque ele será necessário mais adiante neste tutorial.

Se você não criou o balanceador de carga, consulte as páginas a seguir para criar um:

Configurar a integração do CA Service com o Gerenciador de Certificados

Para integrar o CA Service ao Gerenciador de certificados, siga estas etapas:

  1. No projeto de destino Google Cloud , crie uma conta de serviço do Certificate Manager:

    gcloud beta services identity create --service=certificatemanager.googleapis.com \
        --project=PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do projeto de destino doGoogle Cloud .

    O comando retorna o nome da identidade de serviço criada. Veja o exemplo a seguir:

    service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
    
  2. Conceda à conta de serviço do Gerenciador de Certificados o papel de Solicitante de Certificado do CA Service (roles/privateca.certificateRequester) no pool de CA de destino:

    gcloud privateca pools add-iam-policy-binding CA_POOL \
        --location LOCATION \
        --member "serviceAccount:SERVICE_ACCOUNT" \
        --role roles/privateca.certificateRequester
    

    Substitua:

    • CA_POOL: o ID do pool de CAs de destino.
    • LOCATION: o local de destino do Google Cloud .
    • SERVICE_ACCOUNT: o nome completo da conta de serviço que você criou na etapa 1.
  3. Crie um recurso de configuração de emissão de certificado para o pool de CAs:

    Console

    1. No console do Google Cloud , acesse a guia Configurações de emissão na página Gerenciador de certificados.

      Acessar o Gerenciador de Certificados

    2. Clique em Criar. A página Criar uma configuração de emissão de certificado é exibida.

    3. No campo Nome, insira um nome exclusivo para a configuração de emissão de certificado.

    4. Opcional: no campo Descrição, insira uma descrição para a configuração de emissão.

    5. Em Local, selecione Global.

    6. Opcional: no campo Ciclo de vida, especifique o ciclo de vida do certificado emitido em dias. O valor precisa estar entre 21 e 30 dias (inclusive).

    7. Opcional: em Porcentagem da janela de rotação, especifique a porcentagem do ciclo de vida do certificado em que o processo de renovação começa. Para encontrar o intervalo de valores válidos, consulte Porcentagem da janela de ciclo de vida e rotação.

    8. Opcional: na lista Algoritmo de chave, selecione o algoritmo de chave a ser usado ao gerar a chave privada.

    9. Na lista Pool de CAs, selecione o nome do pool de CAs a ser atribuído a esse recurso de configuração de emissão de certificados.

    10. No campo Rótulos, especifique os rótulos a serem associados ao certificado. Para adicionar um rótulo, clique em Adicionar rótulo e especifique uma chave e um valor para ele.

    11. Clique em Criar.

    gcloud

    gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
        --ca-pool=CA_POOL
    

    Substitua:

    • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão de certificado.
    • CA_POOL: o caminho completo do recurso e o nome do pool de CAs que você quer atribuir a esse recurso de configuração de emissão de certificados.

    Para mais informações sobre recursos de configuração de emissão de certificados, consulte Gerenciar recursos de configuração de emissão de certificados.

Criar um certificado gerenciado pelo Google emitido pela instância do CA Service

Para criar um certificado gerenciado pelo Google emitido pela instância do CA Service, faça o seguinte:

Console

  1. No console do Google Cloud , acesse a página Gerenciador de certificados.

    Acessar o Gerenciador de Certificados

  2. Na guia Certificados, clique em Adicionar certificado.

  3. No campo Nome do certificado, insira um nome exclusivo para o certificado.

  4. Opcional: no campo Descrição, insira uma descrição para o certificado. A descrição permite identificar o certificado.

  5. Em Local, selecione Global.

  6. Em Escopo, selecione Padrão.

  7. Em Tipo de certificado, selecione Criar certificado gerenciado pelo Google.

  8. Em Tipo de autoridade certificadora, selecione Particular.

  9. No campo Nomes de domínio, especifique uma lista de nomes de domínio do certificado delimitada por vírgulas. Cada nome de domínio precisa ser um nome de domínio totalmente qualificado, como myorg.example.com.

  10. Em Selecionar uma configuração de emissão de certificado, selecione o nome do recurso de configuração de emissão de certificado que faz referência ao pool de CAs de destino.

  11. No campo Rótulos, especifique os rótulos a serem associados ao certificado. Para adicionar um rótulo, clique em Adicionar rótulo e especifique uma chave e um valor para ele.

  12. Clique em Criar.

    O novo certificado vai aparecer na lista de certificados.

gcloud

Para criar um certificado global gerenciado pelo Google com o Certificate Authority Service, use o comando certificate-manager certificates create com a flag issuance-config:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config=ISSUANCE_CONFIG_NAME

Substitua:

  • CERTIFICATE_NAME: o nome do certificado.
  • DOMAIN_NAME: o nome do domínio de destino. O nome de domínio precisa ser um nome de domínio totalmente qualificado, como myorg.example.com.
  • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão de certificados que faz referência ao pool de CAs de destino.

API

Crie o certificado fazendo uma solicitação POST ao método certificates.create da seguinte maneira:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
 }
}

Substitua:

  • PROJECT_ID: ID do seu projeto do Google Cloud .
  • CERTIFICATE_NAME: o nome do certificado.
  • DOMAIN_NAME: o nome do domínio de destino. O nome de domínio precisa ser um nome de domínio totalmente qualificado, como myorg.example.com.
  • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão de certificados que faz referência ao pool de CAs de destino.

Verificar o status do certificado

Antes de implantar um certificado em um balanceador de carga, verifique se ele está ativo. Pode levar vários minutos para que o estado do certificado mude para ACTIVE.

Console

  1. No console do Google Cloud , acesse a página Gerenciador de certificados.

    Acessar o Gerenciador de Certificados

  2. Na guia Certificados, verifique a coluna Status do certificado.

gcloud

Para verificar o status do certificado, execute o seguinte comando:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Substitua CERTIFICATE_NAME pelo nome do certificado de destino gerenciado pelo Google.

O resultado será o seguinte:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  domains:
  - myorg.example.com
  issuanceConfig: projects/myproject/locations/global/issuanceConfigs/myissuanceConfig
  state: ACTIVE
name: projects/myproject/locations/global/certificates/mycertificate
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  - myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Para mais etapas de solução de problemas, consulte Resolver problemas do Gerenciador de Certificados.

Implantar o certificado em um balanceador de carga

Para implantar o certificado global gerenciado pelo Google, use um mapa de certificados.

Criar um mapa de certificados

Crie um mapa de certificados que faça referência ao item no mapa de certificados associado ao seu certificado:

gcloud

Para criar um mapa de certificados, use o comando gcloud certificate-manager maps create:

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificados de destino.

Terraform

Para criar um mapa de certificados, use um recurso google_certificate_manager_certificate_map.

resource "google_certificate_manager_certificate_map" "certificate_map" {
  name        = "${local.name}-certmap-${random_id.tf_prefix.hex}"
  description = "${local.domain} certificate map"
  labels = {
    "terraform" : true
  }
}

Criar um item no mapa de certificados

Crie um item no mapa de certificados e associe-o ao seu certificado e ao mapa de certificados:

gcloud

Para criar um item no mapa de certificados, use o comando gcloud certificate-manager maps entries create:

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME" \
    --hostname="HOSTNAME"

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: nome do item no mapa de certificados.
  • CERTIFICATE_MAP_NAME: nome do mapa de certificados ao qual o item no mapa de certificados está associado.
  • CERTIFICATE_NAME: o nome do certificado que você quer associar ao item no mapa de certificados.
  • HOSTNAME: nome do host que você quer associar ao item no mapa de certificados.

    Se você quiser criar um certificado que cubra um domínio curinga e um domínio raiz, especifique o nome do host com uma raiz e um caractere curinga, como example.com e *.example.com. Além disso, é preciso especificar duas entradas no mapa de certificados: uma para example.com e outra para *.example.com.

Terraform

Para criar um item no mapa de certificados com um domínio raiz, use um recurso google_certificate_manager_certificate_map_entry.

resource "google_certificate_manager_certificate_map_entry" "first_entry" {
  name        = "${local.name}-first-entry-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = local.domain
}

Para criar um item no mapa de certificados com um domínio curinga, use um recurso google_certificate_manager_certificate_map_entry.

resource "google_certificate_manager_certificate_map_entry" "second_entry" {
  name        = "${local.name}-second-entity-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = "*.${local.domain}"
}

Verificar se o item no mapa de certificados está ativo

Verifique se o item no mapa de certificados está ativo antes de anexar o mapa de certificado correspondente ao proxy de destino.

Para verificar o item no mapa de certificados, use o comando gcloud certificate-manager maps entries describe:

gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: nome do item no mapa de certificados.
  • CERTIFICATE_NAME: o nome do certificado que você quer associar ao item no mapa de certificados.

O resultado será o seguinte:

certificates:
createTime: '2021-09-06T10:01:56.229472109Z'
hostname: example.com
name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry
state: ACTIVE
updateTime: '2021-09-06T10:01:58.277031787Z'

Anexar o mapa de certificados ao proxy de destino

É possível anexar o mapa de certificados a um proxy de destino novo ou atual.

Console

Se o proxy de destino fizer parte de um balanceador de carga, será possível anexar o mapa de certificados editando a configuração de front-end do balanceador de carga.

  1. No console do Google Cloud , acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique no nome do balanceador de carga que você quer atualizar e, em seguida, clique em Editar.

  3. Clique em Configuração de front-end e selecione o endereço IP de front-end e a configuração de porta que você quer editar.

  4. Se a opção Escolher repositório de certificados aparecer, selecione Usar mapa de certificados.

  5. Na lista Selecionar um mapa de certificados, escolha o mapa de certificados.

  6. Clique em Concluído e, depois, em Atualizar.

gcloud

Para anexar o mapa de certificados a um novo proxy de destino, use o comando gcloud compute target-https-proxies create:

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --url-map="URL_MAP" \
    --global

Substitua:

  • PROXY_NAME: nome do proxy de destino.
  • CERTIFICATE_MAP_NAME: nome do mapa de certificados que faz referência ao item no mapa de certificados e ao certificado associado.
  • URL_MAP: o nome do mapa de URL.

Para anexar o mapa de certificados a um proxy HTTPS de destino, use o comando gcloud compute target-https-proxies update. Se você não souber o nome do proxy de destino, acesse a página Proxies de destino e anote o nome dele.

gcloud compute target-https-proxies update PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --global

Depois de criar ou atualizar o proxy de destino, execute o seguinte comando para verificá-lo:

gcloud compute target-https-proxies list

Terraform

Para anexar o mapa de certificados ao proxy de destino, use um recurso google_compute_target_https_proxy.

Ao configurar um proxy de destino, se você anexar certificados TLS (SSL) diretamente e também por um mapa de certificados, o proxy usará os certificados referenciados pelo mapa de certificados e ignorará os certificados TLS (SSL) anexados diretamente.

Solução de problemas de certificados emitidos pelo serviço de AC

Para ver as etapas de solução de problemas, consulte Problemas relacionados a certificados emitidos por uma instância do Serviço de CA.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua-os.

  1. Exclua o balanceador de carga e os recursos dele.

    Consulte Limpar uma configuração de balanceamento de carga

  2. Exclua ou desvincule o mapa de certificados do proxy.

    Para excluir o mapa de certificados, execute o seguinte comando:

    gcloud compute target-https-proxies delete PROXY_NAME
    

    Se você quiser manter o proxy HTTPS de destino, remova o mapa de certificados do proxy.

    • Se houver certificados TLS (SSL) anexados diretamente ao proxy, a remoção do mapa de certificados fará com que o proxy volte a usar esses certificados TLS (SSL) anexados diretamente.
    • Se não houver certificados TLS (SSL) anexados diretamente ao proxy, o mapa de certificados não poderá ser desanexado do proxy. Primeiro, é preciso anexar pelo menos um certificado TLS (SSL) diretamente ao proxy antes de desanexar o mapa de certificados.

    Para remover o mapa de certificados, execute o seguinte comando:

    gcloud compute target-https-proxies update PROXY_NAME \
        --clear-certificate-map
    

    Substitua PROXY_NAME pelo nome do proxy de destino.

  3. Exclua o item do mapa de certificados:

    gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \
        --map="CERTIFICATE_MAP_NAME"
    

    Substitua:

    • CERTIFICATE_MAP_ENTRY_NAME: nome do item no mapa de certificados.
    • CERTIFICATE_MAP_NAME: nome do mapa de certificados.
  4. Exclua o mapa de certificados:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificados.

  5. Exclua o certificado gerenciado pelo Google:

    Console

    1. No console do Google Cloud , acesse a página Gerenciador de certificados.

      Acessar o Gerenciador de Certificados

    2. Na guia Certificados, marque a caixa de seleção do certificado.

    3. Clique em Excluir.

    4. Na caixa de diálogo exibida, clique em Excluir para confirmar.

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Substitua CERTIFICATE_NAME pelo nome do certificado de destino.

  6. Exclua o recurso de configuração de emissão de certificado:

    Console

    1. No console do Google Cloud , acesse a guia Configurações de emissão na página Gerenciador de certificados.

      Acessar o Gerenciador de Certificados

    2. Marque a caixa de seleção do recurso de configuração de emissão que você quer excluir.

    3. Clique em Excluir.

    4. Na caixa de diálogo exibida, clique em Excluir para confirmar.

    gcloud

     gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
     

    Substitua ISSUANCE_CONFIG_NAME pelo nome do recurso de configuração de emissão de certificado de destino.

  7. Exclua o pool de CAs.

    Para excluir o pool de CAs ou desativar a última CA ativada em um pool de CAs referenciado por um recurso de configuração de emissão de certificados, exclua todos os recursos de configuração de emissão de certificados que fazem referência ao pool de CAs. Para mais informações, consulte Excluir um pool de CAs.

A seguir