Implante um certificado global gerenciado pelo Google com autorização do balanceador de carga


Neste tutorial, explicamos o processo de implantação do certificado usando um certificado gerenciado pelo Google com a autorização do balanceador de carga como exemplo.

Para ver uma comparação dos tipos compatíveis de autorização de domínio, consulte Autorização de domínio.

Os seguintes balanceadores de carga dão suporte a certificados gerenciados pelo Google com autorização do balanceador de carga:

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

Se você quiser migrar um certificado atual para o Gerenciador de certificados, siga as etapas em Migrar certificados para o gerenciador de certificados.

Objetivos

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

  • Crie um certificado gerenciado pelo Google emitido por uma CA confiável publicamente com autorização do balanceador de carga usando o Gerenciador de certificados.
  • Implante o certificado em um balanceador de carga compatível usando um proxy HTTPS de destino.

Para mais informações sobre o processo de implantação de certificados, consulte a Visão geral da implantação.

Se você estiver seguindo as etapas deste tutorial para implantar um certificado em um domínio que já está disponibilizando tráfego de produção, lembre-se de que o tráfego do domínio será interrompido enquanto o certificado for provisionado e ativado no balanceador de carga correspondente.

Antes de começar

  1. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  2. Verifique se você tem os papéis a seguir para concluir as tarefas deste tutorial:

    • Proprietário do gerenciador de certificados: necessário para criar e gerenciar recursos do gerenciador de certificados.
    • Administrador do balanceador de carga do Compute ou Administrador de rede do Compute: necessário para criar e gerenciar o proxy de destino HTTPS.
    • DNS Administrator: obrigatório se você quiser usar o Cloud DNS como sua solução de DNS.

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

Criar um certificado gerenciado pelo Google com autorização do balanceador de carga

Para criar um certificado gerenciado pelo Google com autorização do balanceador de carga, conclua as etapas nesta seção.

Para especificar vários nomes de domínio para o certificado, forneça uma lista de nomes de domínio de destino separados por vírgulas.

Para mais informações, consulte Permissões e papéis.

gcloud

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

Substitua:

  • CERTIFICATE_NAME: um nome exclusivo do certificado.
  • DOMAIN_NAMES: uma lista delimitada por vírgulas dos domínios de destino do certificado. Cada nome de domínio precisa ser totalmente qualificado, como myorg.example.com.

Terraform

Use um recurso google_certificate_manager_certificate.

resource "google_certificate_manager_certificate" "default" {
  name        = "${local.name}-rootcert-${random_id.tf_prefix.hex}"
  description = "Cert with LB authorization"
  managed {
    domains = [local.domain]
  }
  labels = {
    "terraform" : true
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

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"],
 }
}

Substitua:

  • PROJECT_ID: o ID do projeto de destino do Google Cloud.
  • CERTIFICATE_NAME: um nome exclusivo que descreve o certificado.
  • DOMAIN_NAME: o domínio de destino do certificado. O nome de domínio precisa ser um nome de domínio totalmente qualificado, como myorg.example.com.

Para uma visão geral do processo de implantação do certificado, consulte Visão geral da implantação.

Implantar o certificado em um balanceador de carga

Conclua as etapas nesta seção para implantar em um balanceador de carga o certificado gerenciado pelo Google que você criou nas etapas anteriores.

Criar um CertificateMap

Crie um mapa de certificado que faça referência à entrada do mapa de certificado associada ao seu certificado.

gcloud

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificado de destino.

Terraform

Use um recurso google_certificate_manager_certificate_map.

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

Criar uma entrada de mapa de certificado

Crie uma entrada de mapa de certificado e a associe ao seu certificado e ao seu mapa de certificados (links em inglês).

gcloud

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

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: um nome exclusivo da entrada do mapa de certificado
  • CERTIFICATE_MAP_NAME: o nome do mapa do certificado ao qual esta entrada de mapa do certificado está anexada.
  • CERTIFICATE_NAME: o nome do certificado que você quer associar a esta entrada de mapa de certificado.
  • HOSTNAME: o nome do host que você quer associar a essa entrada de mapa de certificado.

Terraform

Use um recurso google_certificate_manager_certificate_map_entry.

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

Verificar se a entrada do mapa de certificado está ativa

Use o comando a seguir para verificar se a entrada do mapa de certificados está ativa antes de anexar o mapa de certificado correspondente ao proxy de destino:

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

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa do certificado de destino
  • CERTIFICATE_MAP_NAME: o nome do mapa do certificado ao qual esta entrada de mapa do certificado se anexa.

O comando retorna uma saída semelhante a esta:

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

Anexar o mapa de certificado ao proxy de destino

Anexe o mapa de certificado configurado ao proxy de destino desejado.

Console

  1. No Console do Google Cloud, acesse a página Proxies de destino.

Acessar proxies de destino

  1. Anote o nome do proxy de destino.

  2. Anexe o mapa de certificado ao proxy de destino:

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

Substitua:

*   `PROXY_NAME`: the name of the target proxy
*   `CERTIFICATE_MAP_NAME`: the name of the certificate
    map referencing your certificate map entry and its associated
    certificate

Terraform

Use um recurso google_compute_target_https_proxy.

resource "google_compute_target_https_proxy" "default" {
  name            = "test-proxy"
  certificate_map = "//certificatemanager.googleapis.com/${google_certificate_manager_certificate_map.default.id}"
  url_map         = google_compute_url_map.default.id
}

Se houver certificados TLS (SSL) anexados diretamente ao proxy, o proxy dará preferência aos certificados referenciados pelo mapa de certificados em relação aos certificados TLS (SSL) anexados diretamente.

Aguardar a ativação do certificado

Depois de anexar o certificado ao proxy de destino, pode levar várias horas para que o certificado seja emitido e o status mude para ACTIVE. Quando o status for ACTIVE, pode levar até 30 minutos para que o balanceador de carga comece a usar o certificado.

Use o seguinte comando para verificar o status do certificado:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

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

O comando retorna uma saída semelhante a esta:

certificatePem: myPEM
createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  -   domain: myorg.example.com
    state: AUTHORIZED
  domains:
  -   myorg.example.com
    state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
scope: myScope
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Se o status do certificado não mudar para ACTIVE após várias horas, verifique o seguinte:

Para mais etapas de solução de problemas, consulte Solução de problemas de certificados SSL.

Limpar

Para reverter as alterações feitas neste tutorial, siga estas etapas:

  1. Desanexe o mapa de certificado do proxy.

    Antes de remover o mapa de certificados, observe o seguinte:

    • Se houver algum certificado TLS (SSL) anexado diretamente ao proxy, a remoção do mapa de certificados fará com que o proxy retome o uso dos certificados TLS (SSL) anexados diretamente.
    • Se não houver certificados TLS (SSL) anexados diretamente ao proxy, o mapa de certificado não poderá ser removido do proxy. Primeiro, é necessário anexar pelo menos um certificado TLS (SSL) diretamente ao proxy antes de remover o mapa de certificado.

    Para desanexar o mapa de certificado, execute o seguinte comando:

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    
  2. Exclua a entrada do mapa de certificado:

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

    Substitua:

    • CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa do certificado de destino
    • CERTIFICATE_MAP_NAME: o nome do mapa de certificado de destino.
  3. Exclua o mapa de certificado:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificado de destino.

  4. Exclua o certificado gerenciado pelo Google:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Substitua CERTIFICATE_NAME pelo nome do certificado de destino.

A seguir