Implementa un certificado global administrado por Google con autorización del balanceador de cargas


En este instructivo, se explica el proceso de implementación de certificados mediante un certificado administrado por Google con autorización del balanceador de cargas como ejemplo.

Para ver una comparación de los tipos de autorización de dominio admitidos, consulta Autorización de dominio.

Los siguientes balanceadores de cargas admiten certificados administrados por Google con autorización de balanceadores de cargas:

  • Balanceador de cargas de aplicaciones externo global
  • Balanceador de cargas de aplicaciones clásico
  • Balanceador de cargas de red del proxy externo global

Si deseas migrar un certificado existente al Administrador de certificados, sigue los pasos que se indican en Cómo migrar certificados al Administrador de certificados.

Objetivos

En este instructivo, se muestra cómo completar las siguientes tareas:

  • Crea un certificado administrado por Google emitido por una AC de confianza pública con autorización del balanceador de cargas mediante el Administrador de certificados.
  • Implementa el certificado en un balanceador de cargas compatible mediante un proxy HTTPS de destino.

Para obtener más información sobre el proceso de implementación de certificados, consulta Descripción general de la implementación.

Si sigues los pasos de este instructivo a fin de implementar un certificado para un dominio que ya entrega tráfico de producción, ten en cuenta que el tráfico de ese dominio se interrumpirá mientras se aprovisione y active el certificado en el balanceador de cargas correspondiente.

Antes de comenzar

  1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  2. Asegúrate de tener los siguientes roles para completar las tareas de este instructivo:

    • Propietario del Administrador de certificados: Es necesario para crear y administrar los recursos del Administrador de certificados.
    • Administrador del balanceador de cargas de Compute o Administrador de la red de Compute: Se requiere para crear y administrar el proxy de destino HTTPS.
    • Administrador de DNS: Es obligatorio si deseas usar Cloud DNS como tu solución de DNS.

    Para obtener más información, consulta lo siguiente:

Crear un certificado administrado por Google con autorización del balanceador de cargas

Para crear un certificado administrado por Google con autorización del balanceador de cargas, completa los pasos de esta sección.

Si quieres especificar varios nombres de dominio para el certificado, proporciona una lista delimitada por comas de nombres de dominio de destino para el certificado.

Para obtener más información, consulta el artículo sobre permisos y funciones.

gcloud

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

Reemplaza lo siguiente:

  • CERTIFICATE_NAME: Es un nombre único del certificado.
  • DOMAIN_NAMES: Es una lista delimitada por comas de los dominios de destino para este certificado. Cada nombre de dominio debe ser un nombre de dominio completamente calificado, como myorg.example.com.

Terraform

Usa un 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
  }
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

API

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

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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud de destino.
  • CERTIFICATE_NAME: Es un nombre único que describe este certificado.
  • DOMAIN_NAME: Es el dominio de destino de este certificado. El nombre de dominio debe ser un nombre de dominio completamente calificado, como myorg.example.com.

Para obtener una descripción general del proceso de implementación de certificados, consulta Descripción general de la implementación.

Implementa el certificado en un balanceador de cargas

Completa los pasos de esta sección para implementar el certificado administrado por Google que creaste en los pasos anteriores en un balanceador de cargas.

Crea un mapa de certificados

Crea un mapa de certificados que haga referencia a la entrada de mapa de certificados asociada con tu certificado.

gcloud

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Reemplaza CERTIFICATE_MAP_NAME por el nombre del mapa de certificados de destino.

Terraform

Usa un 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
  }
}

Crea una entrada de mapa de certificados

Crea una entrada de mapa de certificados y asóciala con tu certificado y con tu mapa de certificados.

gcloud

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

Reemplaza lo siguiente:

  • CERTIFICATE_MAP_ENTRY_NAME: Es un nombre único de la entrada del mapa de certificados.
  • CERTIFICATE_MAP_NAME: Es el nombre del mapa de certificados al que se adjunta esta entrada de este mapa de certificados.
  • CERTIFICATE_NAME: Es el nombre del certificado que deseas asociar con esta entrada de mapa de certificados.
  • HOSTNAME: Es el nombre de host que deseas asociar con esta entrada de mapa de certificados.

Terraform

Usa un 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
}

Cómo verificar que la entrada del mapa de certificados esté activa

Usa el siguiente comando para verificar que la entrada de mapa de certificados esté activa antes de adjuntar tu mapa de certificados correspondiente al proxy de destino:

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

Reemplaza lo siguiente:

  • CERTIFICATE_MAP_ENTRY_NAME: Es el nombre de la entrada del mapa de certificados de destino.
  • CERTIFICATE_MAP_NAME: Es el nombre del mapa de certificados al que se adjunta esta entrada de este mapa de certificados.

El comando muestra un resultado similar al siguiente:

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'

Conecta el mapa de certificados al proxy de destino

Adjunta el mapa de certificados configurado al proxy de destino deseado.

Console

  1. En la consola de Google Cloud, ve a la página Proxies de destino.

Ir a Proxies de destino

  1. Anota el nombre del proxy de destino.

  2. Adjunta el mapa de certificados al proxy de destino:

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

Reemplaza lo siguiente:

*   `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

Usa un 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
}

Si hay certificados TLS (SSL) existentes adjuntos directamente al proxy, este da prioridad a los certificados a los que hace referencia el mapa de certificados en lugar de los certificados TLS (SSL) conectados directamente.

Esperar hasta que el certificado se haya activado

Después de conectar el certificado al proxy de destino, el certificado puede tardar hasta varias horas en emitirse y su estado cambiar a ACTIVE. Una vez que el estado sea ACTIVE, pueden pasar hasta 30 minutos para que el balanceador de cargas comience a usar el certificado.

Usa el siguiente comando para verificar el estado del certificado:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Reemplaza CERTIFICATE_NAME por el nombre del certificado administrado por Google de destino.

El comando muestra un resultado similar al siguiente:

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'

Si el estado del certificado no cambió a ACTIVE después de varias horas, verifica lo siguiente:

Si quieres conocer más pasos para solucionar problemas, consulta Solución de problemas de certificados SSL.

Limpia

Para revertir los cambios que realizaste en este instructivo, completa los siguientes pasos:

  1. Desconecta el mapa de certificados del proxy.

    Antes de desvincular el mapa de certificados, ten en cuenta lo siguiente:

    • Si había certificados TLS (SSL) adjuntos directamente al proxy, la desvinculación del mapa de certificados hace que el proxy se reanude con esos certificados TLS (SSL) conectados de forma directa.
    • Si no había certificados TLS (SSL) adjuntos directamente al proxy, el mapa de certificados no se puede desconectar del proxy. Debes adjuntar al menos un certificado TLS (SSL) directamente al proxy para poder desvincular el mapa de certificados.

    Para desvincular el mapa de certificados, ejecuta el siguiente comando:

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    
  2. Borra la entrada del mapa de certificados del mapa de certificados:

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

    Reemplaza lo siguiente:

    • CERTIFICATE_MAP_ENTRY_NAME: Es el nombre de la entrada del mapa de certificados de destino.
    • CERTIFICATE_MAP_NAME: Es el nombre del mapa de certificados de destino.
  3. Borra el mapa de certificados:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Reemplaza CERTIFICATE_MAP_NAME por el nombre del mapa de certificados de destino.

  4. Borra el certificado administrado por Google:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Reemplaza CERTIFICATE_NAME por el nombre del certificado de destino.

¿Qué sigue?