Implementa un certificado global administrado por Google con Certificate Authority Service


En este instructivo, se explica el proceso de implementación de certificados mediante un certificado administrado por Google con Certificate Authority Service como ejemplo.

Los siguientes balanceadores de cargas admiten certificados administrados por Google con CA Service:

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

Si hay una política de emisión de certificados vigente en el grupo de AC de destino, el aprovisionamiento de certificados puede fallar por alguno de los siguientes motivos:

  • La política de emisión de certificados bloqueó el certificado solicitado. En este caso, no se te facturará, ya que el certificado no se emitió.
  • La política aplicó cambios al certificado que no son compatibles con el Administrador de certificados. En este caso, se te facturará desde que se emitió el certificado, incluso si no es completamente compatible con el Administrador de certificados.

Los certificados emitidos mediante los pasos de este instructivo no son de confianza pública. Si deseas emitir certificados que sean de confianza pública, sigue los pasos de uno de los siguientes instructivos:

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.

Ten en cuenta que, aunque uses un grupo de AC regional para emitir un certificado TLS administrado por Google, el certificado en sí es global y se puede usar en cualquier región.

Objetivos

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

  • Crea un certificado administrado por Google con el Servicio de CA mediante el Administrador de certificados.
  • Implementar 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.

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: Es necesario para crear y administrar el proxy de destino HTTPS.
    • Administrador de Certificate Authority Service: Es obligatorio para realizar acciones en CA Service.

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

  3. Habilita la API de CA Service.

  4. Crea un grupo de CA. Debes crear y habilitar al menos una AC en este grupo de AC.

Cómo configurar la integración del Servicio de CA con el Administrador de certificados

Configura el Administrador de certificados para integrarlo al Servicio de CA de la siguiente manera:

  1. Usa el siguiente comando para crear una cuenta de servicio del Administrador de certificados en el proyecto de destino de Google Cloud:

    gcloud beta services identity create --service=certificatemanager.googleapis.com \
       --project=PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud de destino.

    El comando muestra el nombre de la identidad de servicio creada. Consulta el siguiente ejemplo:

    service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
    
  2. Otorga a la cuenta de servicio del Administrador de certificados la función de solicitante de certificado dentro del grupo de AC de destino de la siguiente manera:

    gcloud privateca pools add-iam-policy-binding CA_POOL \
       --location REGION \
       --member "serviceAccount:SERVICE_ACCOUNT" \
       --role roles/privateca.certificateRequester
    

    Reemplaza lo siguiente:

    • CA_POOL: Es el ID del grupo de AC de destino.
    • REGION: Es la región de Google Cloud de destino.
    • SERVICE_ACCOUNT: Es el nombre completo de la cuenta de servicio que creaste en el paso 1.
  3. Crea un recurso de configuración de emisión de certificados para tu grupo de AC:

    gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
       --ca-pool=CA_POOL \
       [--lifetime=CERTIFICATE_LIFETIME] \
       [--rotation-window-percentage=ROTATION_WINDOW_PERCENTAGE] \
       [--key-algorithm=KEY_ALGORITHM]
    

    Reemplaza lo siguiente:

    • ISSUANCE_CONFIG_NAME: Es el nombre único del recurso de configuración de emisión de certificados.
    • CA_POOL: Es la ruta de acceso completa del recurso y el nombre del grupo de AC que deseas asignar a este recurso de configuración de emisión de certificados.
    • CERTIFICATE_LIFETIME: La vida útil del certificado, expresada en días. Los valores válidos son de 21 a 30 días en el formato de duración estándar. El valor predeterminado es 30 días (30D). Este parámetro de configuración es opcional.

    • ROTATION_WINDOW_PERCENTAGE: El porcentaje de la vida útil del certificado en el que se activa una renovación. Este parámetro de configuración es opcional.

      El valor predeterminado es del 66%. Debes establecer el porcentaje del período de rotación en relación con la vida útil del certificado, de modo que la renovación del certificado se produzca al menos 7 días después de la emisión del certificado y al menos 7 días antes de su vencimiento.

    • KEY_ALGORITHM: Es el algoritmo de encriptación que se usa para generar la clave privada. Los valores válidos son ecdsa-p256 o rsa-2048. El valor predeterminado es rsa-2048. Este parámetro de configuración es opcional.

Para obtener más información sobre la configuración de emisión de certificados, consulta Administra la configuración de emisión de certificados.

Crea un certificado administrado por Google que emita tu instancia de Servicio de CA

Crea un certificado administrado por Google que emita tu instancia de Servicio de CA de la siguiente manera:

gcloud

Para un balanceador de cargas de aplicaciones externo global, un balanceador de cargas de aplicaciones clásico o un balanceador de cargas de red del proxy externo global:

Ejecuta el siguiente comando:

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

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.
  • ISSUANCE_CONFIG_NAME: Es el nombre del recurso de configuración de emisión de certificados que hace referencia al grupo de AC de destino.

Para un balanceador de cargas de aplicaciones interno entre regiones, haz lo siguiente:

Ejecuta el siguiente comando:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config=ISSUANCE_CONFIG_NAME \
    --scope=all-regions

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.
  • ISSUANCE_CONFIG_NAME: Es el nombre del recurso de configuración de emisión de certificados que hace referencia al grupo de AC de destino.

API

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

Para un balanceador de cargas de aplicaciones externo global, un balanceador de cargas de aplicaciones clásico o un balanceador de cargas de red del proxy externo global, usa este comando:

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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud de destino.
  • CERTIFICATE_NAME: Es un nombre único del 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.
  • ISSUANCE_CONFIG_NAME: Es el nombre del recurso de configuración de emisión de certificados que hace referencia al grupo de AC de destino.

Para un balanceador de cargas de aplicaciones interno entre regiones, haz lo siguiente:

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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud de destino.
  • CERTIFICATE_NAME: Es un nombre único del 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.
  • ISSUANCE_CONFIG_NAME: Es el nombre del recurso de configuración de emisión de certificados que hace referencia al grupo de AC de destino.

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

Verifica que el certificado esté activo

Usa el siguiente comando para verificar que el certificado esté activo antes de implementarlo en tu balanceador de cargas. El estado del certificado puede tardar varios minutos en cambiar a ACTIVE.

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:
  domains:
  - myorg.example.com
  issuanceConfig: projects/myProject/locations/global/certificateIssuanceConfigs/myIssuanceConfig
  state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
scope: myScope
sanDnsnames:
- myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Implementa el certificado en un balanceador de cargas

En esta sección, se explican los pasos necesarios para implementar el certificado administrado por Google en un balanceador de cargas.

Antes de continuar con las tareas de esta sección, asegúrate de haber completado las tareas enumeradas en las secciones Configura la integración del servicio de CA con el Administrador de certificados y Crear un certificado administrado por Google emitido por tu instancia de CA Service.

Según el tipo de balanceador de cargas, puedes implementar certificados de la siguiente manera:

Implementa el certificado con un mapa de certificados

En esta sección, se describen los pasos para implementar un certificado con un mapa de certificados.

Crea un mapa de certificados

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

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

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

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

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:

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

    Ir a Proxies de destino

  2. Anota el nombre del proxy de destino.

  3. 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: Es el nombre del proxy de destino.
    • CERTIFICATE_MAP_NAME: Es el nombre del mapa de certificados que hace referencia a tu entrada de mapa de certificados y a su certificado asociado.

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 de forma directa.

Adjunta el certificado directamente al proxy de destino

Para adjuntar el certificado directamente al proxy, ejecuta el siguiente comando:

gcloud compute target-https-proxies update PROXY_NAME \
    --url-map=URL_MAP \
    --global \
    --certificate-manager-certificates=CERTIFICATE_NAME

Reemplaza lo siguiente:

  • PROXY_NAME: Es un nombre único del proxy.
  • URL_MAP: el nombre del mapa de URL. Creaste el mapa de URL cuando creaste el balanceador de cargas.
  • CERTIFICATE_NAME: Es el nombre del certificado.

Soluciona problemas

Si quieres conocer los pasos para solucionar problemas, consulta Problemas relacionados con los certificados emitidos por una instancia de CA Service.

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 desvincular 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
    

    Reemplaza PROXY_NAME por el nombre del proxy de destino.

  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.

  5. Borra el recurso de configuración de emisión de certificados:

    gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
    

    Reemplaza ISSUANCE_CONFIG_NAME por el nombre del recurso de configuración de emisión de certificados de destino.

  6. Borra el grupo de AC como se describe en Borra un grupo de AC.

    Ten en cuenta que, para inhabilitar la última AC que habilitaste en el grupo de AC al que se hace referencia en la configuración de emisión de certificados o borrar todo el grupo de AC al que se hace referencia, primero debes borrar cada configuración de emisión de certificados que haga referencia a ese grupo de AC.

¿Qué sigue?