Desplegar un certificado regional gestionado por Google con autorización de DNS

En este tutorial se muestra cómo usar Certificate Manager para desplegar un certificado regional gestionado por Google con autorización de DNS en un balanceador de carga de aplicaciones externo regional o en un balanceador de carga de aplicaciones interno regional.

Si quieres desplegar balanceadores de carga externos globales o balanceadores de carga entre regiones, consulta lo siguiente:

Crear un certificado gestionado por Google regional

Antes de crear el certificado, crea una zona DNS pública. A continuación, crea una autorización de DNS y añade el registro CNAME a la zona DNS de destino.

Crear una autorización de DNS

Una autorización de DNS solo cubre un nombre de dominio. Debes crear una autorización de DNS independiente para cada nombre de dominio que quieras usar con el certificado de destino.

Si vas a crear una autorización de DNS para un certificado comodín, como *.myorg.example.com, configura la autorización de DNS para el dominio principal (por ejemplo, myorg.example.com).

En el caso de los certificados regionales gestionados por Google, solo puedes crear el tipo de autorización de DNS PER_PROJECT_RECORD.

Consola

Puedes crear una autorización de DNS o adjuntar una que ya tengas al crear un certificado. Para obtener más información, consulta Crear un certificado gestionado por Google que haga referencia a la autorización de DNS.

gcloud

Para crear una autorización de DNS PER_PROJECT_RECORD, usa el siguiente gcloud certificate-manager dns-authorizations createcomando:

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --location="LOCATION"

Haz los cambios siguientes:

  • AUTHORIZATION_NAME: el nombre de la autorización de DNS.
  • DOMAIN_NAME: el nombre del dominio de destino para el que estás creando esta autorización de DNS. El nombre de dominio debe ser un nombre de dominio completo, como myorg.example.com.
  • LOCATION: la ubicación Google Cloud de destino en la que creas la autorización de DNS.

Después de crear la autorización de DNS de PER_PROJECT_RECORD, verifícala con el comando gcloud certificate-manager dns-authorizations describe:

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME \

La salida es similar a la siguiente. En el resultado, busca la sección dnsResourceRecord. Busca el registro CNAME y añade los detalles del registro (data, name y type) a tu configuración de DNS.

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge_ujmmovf2vn55tgye.myorg.example.com
  type: CNAME
domain: myorg.example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

API

Para crear una autorización de DNS, haz una solicitud POST al método dnsAuthorizations.create:

POST /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
  "domain": "DOMAIN_NAME",
  "type": "PER_PROJECT_RECORD"
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del Google Cloud proyecto.
  • LOCATION: la ubicación Google Cloud de destino en la que creas la autorización de DNS.
  • AUTHORIZATION_NAME: el nombre de la autorización de DNS.
  • DOMAIN_NAME: el nombre del dominio de destino para el que estás creando esta autorización de DNS. El nombre de dominio debe ser un nombre de dominio completo, como myorg.example.com.

Crear un certificado gestionado por Google que haga referencia a la autorización de DNS

Para crear un certificado gestionado por Google que haga referencia a la autorización de DNS que has creado en los pasos anteriores, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página Gestor de certificados.

    Ir a Certificate Manager

  2. En la pestaña Certificados, haz clic en Añadir certificado.

  3. En el campo Nombre del certificado, introduce un nombre único para el certificado.

  4. Opcional: En el campo Descripción, escribe una descripción del certificado. La descripción te permite identificar el certificado.

  5. En Ubicación, selecciona Regional.

  6. En la lista Región, selecciona tu región.

  7. En Tipo de certificado, selecciona Crear certificado gestionado por Google.

  8. En Tipo de autoridad de certificación, selecciona Pública.

  9. En el campo Domain Names (Nombres de dominio), especifique una lista de nombres de dominio del certificado delimitados por comas. Cada nombre de dominio debe ser un nombre de dominio completo, como myorg.example.com. El nombre de dominio también puede ser un nombre de dominio comodín, como *.example.com.

  10. En Tipo de autorización, selecciona Autorización de DNS.

    En la página se muestran las autorizaciones de DNS de los nombres de dominio. Si un nombre de dominio no tiene una autorización de DNS asociada, sigue estos pasos para crear una:

    1. Haz clic en Crear autorización de DNS que falta.
    2. En el campo Nombre de autorización de DNS, especifica el nombre de la autorización de DNS.
    3. Haz clic en Crear autorización de DNS.
  11. En el campo Etiquetas, especifica las etiquetas que quieras asociar al certificado. Para añadir una etiqueta, haz clic en Añadir etiqueta y especifica una clave y un valor para la etiqueta.

  12. Haz clic en Crear.

    El nuevo certificado aparece en la lista de certificados.

gcloud

Para crear un certificado regional gestionado por Google con autorización de DNS, ejecuta el certificate-manager certificates create comando con las marcas dns-authorizations y location:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME, *.DOMAIN_NAME" \
    --dns-authorizations="AUTHORIZATION_NAMES" \
    --location=LOCATION

Haz los cambios siguientes:

  • CERTIFICATE_NAME: el nombre del certificado.
  • DOMAIN_NAME: el nombre del dominio de destino. El nombre de dominio debe ser un nombre de dominio completo, como myorg.example.com, o un dominio comodín, como *.myorg.example.com. El prefijo de asterisco y punto (*.) indica que se trata de un certificado comodín.
  • AUTHORIZATION_NAMES: lista delimitada por comas de los nombres de las autorizaciones de DNS.
  • LOCATION: la ubicación de destino. Google Cloud

API

Para crear el certificado, haz una solicitud POST al método certificates.create de la siguiente manera:

POST /v1/projects/PROJECT_ID/locations/LOCATION/certificates?certificate_id=CERTIFICATE_NAME
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "dnsAuthorizations": [
   "projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations/AUTHORIZATION_NAME",
  ],
 }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del Google Cloud proyecto.
  • CERTIFICATE_NAME: el nombre del certificado.
  • DOMAIN_NAME: el nombre del dominio de destino. El nombre de dominio debe ser un nombre de dominio completo, como myorg.example.com, o un dominio comodín, como *.myorg.example.com. El prefijo de asterisco y punto (*.) indica que se trata de un certificado comodín.
  • LOCATION: la ubicación de destino. Google Cloud
  • AUTHORIZATION_NAMES: lista delimitada por comas de los nombres de las autorizaciones de DNS.

Añadir el registro CNAME a tu configuración de DNS

Si usas una solución de DNS de terceros para gestionar tu DNS, consulta su documentación para añadir el registro CNAME a la configuración de DNS. Si usas Google Cloud para gestionar tu DNS, sigue los pasos que se indican en esta sección.

Consola

Para crear un conjunto de registros, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página Zonas DNS.

    Ir a las zonas de Cloud DNS

  2. Haz clic en el nombre de la zona DNS en la que quieras añadir el registro.

  3. En la página Detalles de la zona, haga clic en Añadir estándar.

  4. En la página Crear conjunto de registros, en el campo Nombre de DNS, introduce el subdominio de la zona DNS.

    Cuando introduzca el nombre del subdominio, asegúrese de que el nombre del subdominio, incluido el texto atenuado que se muestra en el campo Nombre DNS, coincida con el valor completo del campo dnsResourceRecord.name tal como se muestra en el resultado del comando gcloud certificate-manager dns-authorizations describe.

    Consulta los siguientes ejemplos:

    • Si el valor del campo dnsResourceRecord.name es _acme-challenge.myorg.example.com. y el texto atenuado del campo Nombre de DNS es .example.com., introduce _acme-challenge.myorg.

    • Si el valor del campo dnsResourceRecord.name es _acme-challenge.myorg.example.com. y el texto atenuado del campo Nombre de DNS es .myorg.example.com., introduce _acme-challenge.

    • Si el valor del campo dnsResourceRecord.name es _acme-challenge_ujmmovf2vn55tgye.myorg.example.com. y el texto atenuado del campo Nombre DNS es .myorg.example.com., introduce _acme-challenge_ujmmovf2vn55tgye.

  5. En el campo Tipo de registro del recurso, selecciona CNAME.

  6. En el campo TTL, introduce un valor numérico positivo para el tiempo de vida del registro del recurso, que es el tiempo que puede almacenarse en la caché.

  7. En la lista Unidad TTL, selecciona la unidad de tiempo. Por ejemplo: 30 minutes.

  8. En el campo Nombre canónico, introduce el valor completo del campo dnsResourceRecord.data tal como se muestra en la salida del comando gcloud certificate-manager dns-authorizations describe.

  9. Para introducir información adicional, haz clic en Añadir elemento.

  10. Haz clic en Crear.

gcloud

Cuando creas una autorización de DNS, el comando de la CLI de gcloud devuelve el registro CNAME correspondiente. Para añadir el registro CNAME a la configuración de DNS en la zona DNS del dominio de destino, sigue estos pasos:

  1. Inicia la transacción del registro DNS:

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    Sustituye DNS_ZONE_NAME por el nombre de la zona DNS de destino.

  2. Añade el registro CNAME a la zona DNS de destino:

    gcloud dns record-sets transaction add CNAME_RECORD \
        --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \
        --ttl="30" \
        --type="CNAME" \
        --zone="DNS_ZONE_NAME"
    

    Haz los cambios siguientes:

    • CNAME_RECORD: el valor de datos completo del registro CNAME devuelto por el comando de la CLI de Google Cloud que creó la autorización de DNS correspondiente.
    • VALIDATION_SUBDOMAIN_NAME: el subdominio de prefijo de la zona DNS, como _acme-challenge. Puedes copiar el nombre del registro del comando gcloud certificate-manager dns-authorizations describe tal como se describe en el artículo Crear una autorización de DNS.
    • DOMAIN_NAME: el nombre del dominio de destino.El nombre de dominio debe ser un nombre de dominio completo, como myorg.example.com. También debes incluir el punto final después del nombre de dominio de destino.
    • DNS_ZONE_NAME: el nombre de la zona DNS de destino.

    Para obtener más información sobre la diferencia entre las autorizaciones de DNS FIXED_RECORD y PER_PROJECT_RECORD, consulte los siguientes ejemplos. La única diferencia entre los dos ejemplos es el valor de la marca --name.

    Autorización de DNS FIXED_RECORD

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge.myorg.example.com." \
        --ttl="30" \
        --type="CNAME" \
        --zone="myorg-example-com"
    

    Autorización de DNS PER_PROJECT_RECORD

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge_ujmmovf2vn55tgye.myorg.example.com." \
        --ttl="30" \
        --type="CNAME" \
        --zone="myorg-example-com"
    
  3. Ejecuta la transacción de registro DNS para guardar los cambios:

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    Sustituye DNS_ZONE_NAME por el nombre de la zona DNS de destino.

Terraform

Para añadir el registro CNAME a tu configuración de DNS, puedes usar un google_dns_record_set recurso.

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

Verificar el estado del certificado

Antes de implementar un certificado en un balanceador de carga, comprueba que esté activo. El estado del certificado puede tardar varios minutos en cambiar a ACTIVE.

Consola

  1. En la Google Cloud consola, ve a la página Gestor de certificados.

    Ir a Certificate Manager

  2. En la pestaña Certificados, consulta la columna Estado del certificado.

gcloud

Para verificar el estado del certificado, ejecuta el siguiente comando:

gcloud certificate-manager certificates describe CERTIFICATE_NAME \
    --location=LOCATION

Haz los cambios siguientes:

  • CERTIFICATE_NAME: el nombre del certificado.
  • LOCATION: la ubicación de destino Google Cloud donde has creado el certificado gestionado por Google.

El resultado debería ser similar al siguiente:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  - domain: myorg.example.com
    state: AUTHORIZED
  dnsAuthorizations:
    - projects/myProject/locations/LOCATION/dnsAuthorizations/myCert
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/LOCATION/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  - myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Si el estado del certificado no es ACTIVE después de varias horas, comprueba que hayas añadido correctamente el registro CNAME a tu configuración de DNS.

Para ver más pasos para solucionar problemas, consulta Solucionar problemas de Gestor de certificados.

Implementar el certificado en un balanceador de carga

Para desplegar el certificado regional gestionado por Google en un balanceador de carga de aplicación externo regional o en un balanceador de carga de aplicación interno regional, adjúntalo directamente al proxy de destino.

Adjuntar el certificado directamente al proxy de destino

Puede adjuntar el certificado a un proxy de destino nuevo o a uno que ya tenga.

Para adjuntar el certificado a un nuevo proxy de destino, usa el gcloud compute target-https-proxies create comando:

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-manager-certificates=CERTIFICATE_NAME \
    --url-map=URL_MAP \
    --region=LOCATION

Haz los cambios siguientes:

  • PROXY_NAME: el nombre del proxy de destino.
  • CERTIFICATE_NAME: el nombre del certificado.
  • URL_MAP: nombre del mapa de URLs. Creaste el mapa de URLs al crear el balanceador de carga.
  • LOCATION: la ubicación de destino Google Cloud donde quieres crear el proxy HTTPS de destino.

Para adjuntar un certificado a un proxy HTTPS de destino, usa el gcloud compute target-https-proxies updatecomando. Si no sabes el nombre del proxy de destino, ve a la página Proxies de destino y anota el nombre del proxy de destino.

gcloud compute target-https-proxies update PROXY_NAME \
    --region=LOCATION \
    --certificate-manager-certificates=CERTIFICATE_NAME

Después de crear o actualizar el proxy de destino, ejecuta el siguiente comando para verificarlo:

gcloud compute target-https-proxies list

Limpieza

Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en este tutorial, elimínalos.

  1. Elimina el balanceador de carga y sus recursos.

    Consulta Limpiar la configuración de un balanceador de carga.

  2. Elimina el certificado gestionado por Google:

    Consola

    1. En la Google Cloud consola, ve a la página Gestor de certificados.

      Ir a Certificate Manager

    2. En la pestaña Certificados, marca la casilla del certificado.

    3. Haz clic en Eliminar.

    4. En el cuadro de diálogo que aparece, haz clic en Eliminar para confirmar la acción.

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME \
        --location=LOCATION
    

    Haz los cambios siguientes:

    • CERTIFICATE_NAME: el nombre del certificado.
    • LOCATION: la ubicación de destino. Google Cloud
  3. Elimina la autorización de DNS:

    gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
       --location=LOCATION
    

    Haz los cambios siguientes:

    • AUTHORIZATION_NAME: el nombre de la autorización de DNS.
    • LOCATION: la ubicación Google Cloud de destino en la que has creado la autorización de DNS.