
En el entorno digital actual, garantizar la seguridad y la privacidad de las comunicaciones en línea es esencial. Los certificados SSL cumplen un rol clave: establecen conexiones seguras, protegen datos sensibles y generan confianza entre los usuarios y los sitios web.
Al configurar certificados SSL en Google Cloud Platform (GCP) para load balancers, verificar la propiedad del dominio es un paso fundamental. Tradicionalmente, la autorización basada en load balancer ha sido el método preferido. Consiste en montar un certificado SSL gestionado por Google en un load balancer y asociar el dominio a la IP del load balancer mediante un registro A.
Configurar certificados SSL gestionados con autorización basada en load balancer puede ser lento y propenso a errores. Por un lado, hay que completar todos los pasos de configuración antes de provisionar el certificado TLS (SSL), lo que genera demoras si se cometen errores o se omite alguno. Por otro lado, la propagación global de registros DNS puede tardar hasta 48 horas. Esto deja una ventana habitual de 10 a 15 minutos en la que el dominio del certificado SSL queda inaccesible. Por eso, este enfoque conviene más para configurar entornos nuevos sin tráfico de producción.
Para superar estos retos y tener listos los certificados gestionados por Google antes que el load balancer —o antes de migrar a Google Cloud desde otro proveedor—, Domain authorization ofrece una alternativa. Con Domain authorization se configuran registros DNS dedicados adicionales para verificar la propiedad del dominio. Así se pueden provisionar los certificados con anticipación, incluso antes de que el target proxy esté listo para recibir tráfico de red. El resultado: migraciones sin downtime desde soluciones de terceros hacia Google Cloud, con una transición mucho más fluida.
Consulta la siguiente tabla con las diferencias entre Load balancer authorization y Domain authorization.

En este artículo te mostramos cómo configurar Domain authorization y crear nuevos certificados en el certificate manager usando Domain authorization.
Requisitos previos
- Una zona DNS pública en Cloud DNS
Domain authorization también funciona con otros proveedores de DNS y la .
- API de Certificate manager habilitada en el proyecto de GCP.
- gcloud CLI.
Para este artículo uso la zona pública chimbuc.dns.doit-playground.com en Cloud DNS.

Configurar DNS authorization
- Define las variables de entorno necesarias.
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- Crea una DNS authorization para tu dominio. Como cada DNS authorization cubre un solo hostname, debes crear una por cada hostname que quieras usar con el certificado de destino.
Si vas a crear una DNS authorization para un certificado wildcard, como *.example.com , configúrala para el dominio padre (por ejemplo, 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
- Obtén los detalles del registro CNAME que debes agregar a tu configuración de DNS.
gcloud certificate-manager dns-authorizations describe $DOMAIN_AUTHORIZATION_NAME \ --project $PROJECT_ID
Detalles de la DNS authorization para example.chimbuc.dns.doit-playground.com
- Agrega el registro CNAME a tu configuración de DNS. Si usas Google Cloud para gestionar tu DNS, sigue los pasos de esta sección. Si no, consulta la documentación de tu proveedor de DNS de terceros.
#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
Configuración de DNS
Crear un certificado gestionado por Google con DNS authorization
- Crea el certificado para el dominio configurado con DNS authorization. Los certificados gestionados por Google solo se pueden crear en la ubicación global.
gcloud certificate-manager certificates create $CERTIFICATE_NAME \ --domains="${DOMAIN_NAME}" \ --dns-authorizations="${DOMAIN_AUTHORIZATION_NAME}" \ --project $PROJECT_ID

Espera unos minutos a que se provisione el certificado. Cuando termine, el estado pasará a activo. Si permanece en Pending por mucho tiempo, haz clic en el nombre del certificado para ver los motivos del fallo.
- Verifica el estado del certificado.
gcloud certificate-manager certificates describe $CERTIFICATE_NAME --project $PROJECT_ID

Para desplegar el certificado generado en un load balancer, hay que crear un certificate map que haga referencia a una o más entradas de certificate map, que asignan certificados específicos a hostnames específicos. Consulta How Certificate Manager Works para más detalles.
- Crea un certificate map.
gcloud certificate-manager maps create $CERTIFICATE_MAP_NAME --project $PROJECT_ID
Certificate Map
- Crea una entrada de certificate map para el dominio.
gcloud certificate-manager maps entries create $CERTIFICATE_MAP_ENTRY_NAME \ --map="${CERTIFICATE_MAP_NAME}" \ --certificates="${CERTIFICATE_NAME}" \ --hostname="${DOMAIN_NAME}" \ --project $PROJECT_ID
Entrada de Certificate Map
Espera unos minutos a que se provisione la entrada de certificate map y a que el estado pase a activo.
gcloud certificate-manager maps entries describe $CERTIFICATE_MAP_ENTRY_NAME \ --map="${CERTIFICATE_MAP_NAME}" \ --project $PROJECT_ID
Desplegar una aplicación de ejemplo
- Crea un managed instance group e instala 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- Crea una regla de firewall que permita el tráfico de los sistemas de health check de 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
instancia de ejemplo
Desplegar el certificado en un load balancer
- Crea los recursos del 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- Crea un target HTTPS proxy para enrutar las solicitudes al URL map y vincula el certificate map al 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
El certificado queda vinculado al target HTTPS proxy
- Crea una regla de forwarding global para enrutar las solicitudes entrantes al 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
Configuración del LB externo
- Crea un record set en Cloud DNS para el dominio y accede al endpoint.

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

En resumen, usar Domain authorization en Google Cloud Platform (GCP) acelera de forma notable la provisión de certificados SSL frente al método tradicional basado en load balancer. Si sigues los pasos de este blog, podrás configurar Domain authorization con eficiencia, crear nuevos certificados TLS y reforzar la seguridad de tu entorno en GCP. Este enfoque reduce el downtime al mínimo y asegura una transición mucho más fluida.