
No cenário digital de hoje, garantir a segurança e a privacidade da comunicação online é essencial. Os certificados SSL têm papel decisivo para estabelecer conexões seguras, proteger dados sensíveis e gerar confiança entre usuários e sites.
Ao configurar certificados SSL no Google Cloud Platform (GCP) para load balancers, a verificação de propriedade do domínio é um fator-chave. Tradicionalmente, a autorização baseada em load balancer foi o método preferido. Ela consiste em vincular um certificado SSL gerenciado pelo Google a um load balancer e associar o domínio ao IP do load balancer por meio de um registro A.
Configurar certificados SSL gerenciados via autorização baseada em load balancer pode ser demorado e suscetível a erros. Primeiro, é preciso concluir todas as etapas de configuração antes de provisionar o certificado TLS (SSL). Isso pode gerar atrasos caso você cometa algum erro ou esqueça uma etapa. Em segundo lugar, a propagação global dos registros DNS pode levar até 48 horas. Ou seja, costuma haver uma janela de 10 a 15 minutos em que o domínio do certificado SSL fica inacessível. Por isso, essa abordagem é mais indicada para configurar novos ambientes que ainda não recebem tráfego de produção.
Para superar esses desafios e garantir que os certificados gerenciados pelo Google estejam prontos antes do load balancer — ou antes de migrar para o Google Cloud vindo de outro provedor —, a Domain authorization oferece uma alternativa. Com a Domain authorization, você configura registros DNS dedicados adicionais para verificar a propriedade do domínio. Assim, é possível provisionar os certificados com antecedência, mesmo antes que o proxy de destino esteja totalmente preparado para receber tráfego de rede. Como resultado, migrações sem downtime de soluções de terceiros para o Google Cloud se tornam viáveis, com uma transição muito mais tranquila.
Consulte a tabela abaixo para conferir as diferenças entre a autorização por load balancer e a Domain authorization.

Este artigo mostra como configurar a domain authorization e criar novos certificados no certificate manager usando domain authorization.
Pré-requisitos
- Uma zona DNS pública no Cloud DNS
A domain authorization também funciona com outros provedores de DNS e a .
- API do Certificate manager habilitada no projeto GCP.
- gcloud CLI.
Neste artigo, estou usando a zona pública chimbuc.dns.doit-playground.com no Cloud DNS.

Configure a DNS authorization
- Defina as variáveis de ambiente necessárias.
export PROJECT_ID="your-project-id"export REGION="your-region" # ex: us-central1export DOMAIN_NAME="domain-name-for-the-certificate" # ex: example.chimbuc.dns.doit-playground.comexport DOMAIN_AUTHORIZATION_NAME="dns-authorization-resource-name" # ex: dns-authorization-exampleexport CLOUD_DNS_ZONE_NAME="your-cloud-dns-zone" # ex: chimbuc.dns.doit-playground.com.export CERTIFICATE_NAME="certificate-manager-cert-name" # ex: example-chimbuc-dns-doit-playground-comexport CERTIFICATE_MAP_NAME="certificate-map-name" # ex: example-dns-authorization-cert-mapexport CERTIFICATE_MAP_ENTRY_NAME="certificate-map-entry" # ex: example-dns-authorization-cert-map-entry- Crie uma DNS authorization para o seu domínio. Como cada DNS authorization cobre apenas um hostname, você precisa criar uma DNS authorization para cada hostname que pretende usar com o certificado de destino.
Se estiver criando uma DNS authorization para um certificado curinga, como *.example.com , configure a DNS authorization para o domínio pai (por exemplo, example.com ).
gcloud certificate-manager dns-authorizations create $DOMAIN_AUTHORIZATION_NAME \ --domain="${DOMAIN_NAME}" \ --project $PROJECT_ID
DNS authorization para example.chimbuc.dns.doit-playground.com
- Obtenha os detalhes do registro CNAME que você precisa adicionar à sua configuração de DNS.
gcloud certificate-manager dns-authorizations describe $DOMAIN_AUTHORIZATION_NAME \ --project $PROJECT_ID
Detalhes da DNS authorization para example.chimbuc.dns.doit-playground.com
- Adicione o registro CNAME à sua configuração de DNS. Se você usa o Google Cloud para gerenciar seu DNS, siga as etapas desta seção. Caso contrário, consulte a documentação da sua solução de DNS de terceiros.
#Initiate the DNS record transactiongcloud dns record-sets transaction start --zone="${CLOUD_DNS_ZONE_NAME}" \ --project $PROJECT_ID
#Add the CNAME record to the target DNS zonegcloud dns record-sets transaction add CNAME_RECORD_DATA \ --name="_acme-challenge.${DOMAIN_NAME}." \ --ttl="30" \ --type="CNAME" \ --zone="${CLOUD_DNS_ZONE_NAME}" \ --project $PROJECT_ID
#Execute the DNS record transaction to save your changesgcloud dns record-sets transaction execute --zone="${CLOUD_DNS_ZONE_NAME}" \ --project $PROJECT_ID
Configuração de DNS
Crie um certificado gerenciado pelo Google com DNS authorization
- Crie o certificado para o domínio configurado com DNS authorization. Só é possível criar certificados gerenciados pelo Google na localização global.
gcloud certificate-manager certificates create $CERTIFICATE_NAME \ --domains="${DOMAIN_NAME}" \ --dns-authorizations="${DOMAIN_AUTHORIZATION_NAME}" \ --project $PROJECT_ID

Aguarde alguns minutos até que o certificado seja provisionado. Quando concluído, o status muda para active. Se o status ficar como Pending por muito tempo, clique no nome do certificado para ver os motivos da falha.
- Verifique o status do certificado.
gcloud certificate-manager certificates describe $CERTIFICATE_NAME --project $PROJECT_ID

Para implantar o certificado gerado em um load balancer, é preciso criar um certificate map que faça referência a uma ou mais certificate map entries, que atribuem certificados específicos a hostnames específicos. Veja How Certificate Manager Works para mais detalhes.
- Crie um certificate map.
gcloud certificate-manager maps create $CERTIFICATE_MAP_NAME --project $PROJECT_ID
Certificate Map
- Crie uma certificate map entry para o domínio.
gcloud certificate-manager maps entries create $CERTIFICATE_MAP_ENTRY_NAME \ --map="${CERTIFICATE_MAP_NAME}" \ --certificates="${CERTIFICATE_NAME}" \ --hostname="${DOMAIN_NAME}" \ --project $PROJECT_ID
Certificate Map entry
Aguarde alguns minutos até que a certificate map entry seja provisionada e o status mude para active.
gcloud certificate-manager maps entries describe $CERTIFICATE_MAP_ENTRY_NAME \ --map="${CERTIFICATE_MAP_NAME}" \ --project $PROJECT_ID
Implante uma aplicação de exemplo
- Crie um managed instance group e instale o Apache.
#Create an instance template.gcloud compute instance-templates create web-app-instance-template \ --region=$REGION \ --project $PROJECT_ID \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-10 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
#Create the managed instance group based on the template.
gcloud compute instance-groups managed create web-app-instance-group \ --template=web-app-instance-template \ --size=1 \ --zone="${REGION}"-b \ --project $PROJECT_ID
#Add a named port to the instance group
gcloud compute instance-groups set-named-ports web-app-instance-group \ --named-ports http:80 \ --zone "${REGION}"-b \ --project $PROJECT_ID- Crie uma regra de firewall para permitir o tráfego dos sistemas de health check do Google Cloud.
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80 \ --project $PROJECT_ID
instância de exemplo
Implante o certificado em um load balancer
- Crie os recursos do load balancer.
#Reserve an external ipgcloud compute addresses create external-lb-ipv4 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global \ --project $PROJECT_ID
#Create a health checkgcloud compute health-checks create http http-basic-check \ --port 80 \ --project $PROJECT_ID
#Create a backend servicegcloud compute backend-services create web-app-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global \ --project $PROJECT_ID
#Add the instance group as the backend to the backend service.gcloud compute backend-services add-backend web-app-backend-service \ --instance-group=web-app-instance-group \ --instance-group-zone="${REGION}"-b \ --global \ --project $PROJECT_ID
#create a URL map to route the incoming requests to the default backend servicegcloud compute url-maps create web-app-url-map-https \ --default-service web-app-backend-service \ --project $PROJECT_ID- Crie um target HTTPS proxy para encaminhar as requisições ao URL map e anexe o certificate map ao target proxy.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-app-url-map-https \ --certificate-map="${CERTIFICATE_MAP_NAME}" \ --project $PROJECT_ID
O certificado fica anexado ao target HTTPS proxy
- Crie uma global forwarding rule para encaminhar as requisições recebidas ao proxy.
gcloud compute forwarding-rules create web-app-https-fw-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=external-lb-ipv4 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443 \ --project $PROJECT_ID
Configuração do LB externo
- Crie um record set no Cloud DNS para o domínio e acesse o endpoint.

Registro A para example.chimbuc.dns.doit-playground.com

Em resumo, usar a domain authorization no Google Cloud Platform (GCP) acelera bastante o provisionamento de certificados SSL em comparação com o método tradicional baseado em load balancer. Seguindo o passo a passo deste artigo, você consegue configurar a domain authorization com eficiência, criar novos certificados TLS e reforçar a segurança do seu ambiente GCP. É uma abordagem que reduz o downtime e garante uma transição mais tranquila.