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


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

Para obtener una comparación de los tipos de autorización de dominio compatibles, consulta Autorización de dominio.

Los siguientes balanceadores de cargas admiten certificados administrados por Google con Autorización del balanceador 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 quieres migrar un certificado existente al Administrador de certificados, sigue los pasos que se indican en Migra certificados a Administrador de certificados en su lugar.

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 la autorización del balanceador de cargas mediante el Administrador de certificados.
  • Implementar el certificado en un balanceador de cargas compatible con un HTTPS de destino proxy.

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

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

Antes de comenzar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

    • Propietario del Administrador de certificados: Es obligatorio para crear y administrar recursos del Administrador de certificados.
    • Administrador del balanceador de cargas de Compute o Administrador de red de Compute: Obligatorio para crear y administrar un proxy HTTPS de destino.
    • Administrador de DNS: es obligatorio si quieres usar Cloud DNS como solución de DNS.

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

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

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

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

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

Console

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

    Ir al Administrador de certificados

  2. En la página que aparece, selecciona la pestaña Certificados.

  3. Haz clic en Agregar certificado.

  4. Ingresa un Nombre para el certificado.

    Este nombre debe ser único para el proyecto.

  5. Opcional: Ingresa la descripción del certificado. La descripción te ayuda a identificar un certificado específico más adelante.

  6. En Ubicación, elige Global.

  7. En Alcance, elige Predeterminado.

  8. En Tipo de certificado, elige Crear certificado administrado por Google.

  9. En Tipo de autoridad certificadora, selecciona Pública.

  10. Especifica los Nombres de dominio del certificado. Ingresa un valor lista de los dominios de destino. Además, cada nombre de dominio debe ser un nombre de dominio completamente calificado, como myorg.example.com.

  11. En Tipo de autorización, elige Autorización del balanceador de cargas.

  12. Especifica una etiqueta para asociar al certificado. Puedes agregar más de una etiqueta, si es necesario. Para agregar una etiqueta, haz clic en Agregar etiqueta y especifica una key y una value para tu etiqueta.

  13. Haz clic en Crear. Verifica que el certificado nuevo aparezca en la lista de certificados.

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 de este certificado. Cada nombre de dominio debe ser un nombre de dominio completamente calificado, como myorg.example.com.

Terraform

Usa un google_certificate_manager_certificate recurso.

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

Crea el certificado mediante una solicitud POST al 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 que creaste en los pasos anteriores a 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 destino. mapa de certificados.

Terraform

Usa un google_certificate_manager_certificate_map recurso.

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 del mapa de certificados

Crea una entrada de mapa de certificados. y asociarlo con tu certificado como y 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 del entrada del mapa de certificados
  • CERTIFICATE_MAP_NAME: Es el nombre del mapa de certificados. al que se adjunta esta entrada del mapa de certificados
  • CERTIFICATE_NAME: Es el nombre del certificado que quieres asociar con esta entrada del mapa de certificados
  • HOSTNAME: Es el nombre de host que deseas asociar con esta entrada de mapa de certificados.

Terraform

Usa un google_certificate_manager_certificate_map_entry recurso.

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
}

Verifica 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 del destino. entrada del mapa de certificados
  • CERTIFICATE_MAP_NAME: Es el nombre del certificado asignado al que esta entrada del mapa de certificados adjunta

El comando muestra un resultado similar al siguiente:

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

Adjunta el mapa de certificados al proxy de destino

Adjunta el mapa de certificados configurado al proxy de destino.

Console

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

Ir a Objetivo proxies

  1. Anota el nombre del proxy de destino.

  2. Conecta 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 google_compute_target_https_proxy recurso.

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, el proxy da preferencia a los certificados a los que hace referencia el mapa de certificados a través de certificados TLS (SSL) adjuntos directamente.

Espere hasta que el certificado se active

Después de adjuntar el certificado al proxy de destino, puede tardar hasta varias horas para que se emita el certificado y su estado cambie a ACTIVE Una vez que el estado sea ACTIVE, el balanceador de cargas puede tardar hasta 30 minutos en comenzar 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 destino. Certificado administrado por Google.

El comando muestra un resultado similar al siguiente:

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
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 SSL certificados.

Limpia

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

  1. Desconecta el mapa de certificados del proxy.

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

    • Si había certificados TLS (SSL) adjuntos directamente al proxy, desconectar el mapa de certificados hace que el proxy reanude el uso de esos certificados TLS (SSL) adjuntos directamente.
    • Si no había certificados TLS (SSL) adjuntos directamente al proxy, el mapa de certificados no se puede separar del proxy. Primero debes adjuntar al menos un certificado TLS (SSL) directamente al proxy antes de el mapa de certificados.

    Para separar 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 destino. mapa de certificados.

  4. Borra el certificado administrado por Google:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Reemplaza CERTIFICATE_NAME por el nombre del destino. certificado.

¿Qué sigue?