Usa certificados SSL administrados por Google.

En esta página, se explica cómo crear y usar certificados SSL administrados por Google de Compute Engine.

Para crear certificados administrados por Google mediante el Administrador de certificados, consulta Descripción general de la implementación.

Los certificados SSL administrados por Google son certificados de validación de dominio (DV) que Google Cloud obtiene y administra para tus dominios. Admiten varios nombres de host en cada certificado, y Google los renueva automáticamente.

Los certificados administrados por Google son compatibles con los siguientes 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 (con un proxy SSL de destino)

Los certificados SSL administrados por Google no son compatibles con los balanceadores de cargas de aplicaciones externos regionales ni con los balanceadores de cargas de aplicaciones internos regionales. Para estos balanceadores de cargas, usa certificados SSL autoadministrados.

También puedes usar certificados SSL administrados con Google Kubernetes Engine. Para obtener más información, consulta Usa certificados SSL administrados por Google.

Puedes crear un certificado administrado por Google antes o después de crear el balanceador de cargas, o bien durante el proceso de creación. En esta página, se supone que creas el certificado de Compute Engine antes o después de crear el balanceador de cargas, no durante el proceso. Para crear el certificado mientras creas el balanceador de cargas, consulta las guías prácticas del balanceador de cargas.

Antes de comenzar

Permisos

Para seguir esta guía, debes poder crear y modificar certificados SSL en tu proyecto. Puedes hacer esto si se cumple una de las siguientes condiciones:

Paso 1. Crea un certificado SSL administrado por Google

Puedes crear un certificado administrado por Google antes o después de crear el balanceador de cargas, o bien durante el proceso de creación. Durante el proceso de creación de un balanceador de cargas en la consola de Google Cloud, puedes usar la consola de Cloud para crear el certificado. Como alternativa, puedes crear el certificado antes o después de crear el balanceador de cargas. En este paso, se muestra cómo crear un certificado que luego puedes agregar a uno o más balanceadores de cargas.

Si ya creaste el certificado SSL administrado por Google, puedes omitir este paso.

Consola

Puedes trabajar con certificados SSL globales en la pestaña Certificados clásicos de la página Administrador de certificados.

  1. Ve a la pestaña Certificados clásicos en la consola de Google Cloud.
    Ir a Certificados clásicos
  2. Haz clic en Crear certificado SSL.
  3. Ingresa un nombre y una descripción opcional para el certificado.
  4. Selecciona Crear certificado administrado por Google.
  5. Agrega los dominios.
  6. Haz clic en Crear.

gcloud

Si quieres crear un certificado SSL global administrado por Google para un balanceador de cargas de red del proxy externo o un balanceador de cargas de aplicaciones externo global, usa el comando gcloud compute ssl-certificates create:

gcloud compute ssl-certificates create CERTIFICATE_NAME \
    --description=DESCRIPTION \
    --domains=DOMAIN_LIST \
    --global

Reemplaza lo siguiente:

  • CERTIFICATE_NAME: Un nombre para el certificado SSL global
  • DESCRIPTION: Una descripción para el certificado SSL global
  • DOMAIN_LIST: Un nombre de dominio único o una lista de nombres de dominio delimitada por comas para usar en este certificado

Terraform

Para crear el certificado SSL administrado por Google, usa el recurso google_compute_managed_ssl_certificate.

resource "google_compute_managed_ssl_certificate" "lb_default" {
  provider = google-beta
  name     = "myservice-ssl-cert"

  managed {
    domains = ["example.com"]
  }
}

api

Crea el método sslCertificates.insert del recurso de certificado administrado por Google y reemplaza PROJECT_ID por el ID del proyecto.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/sslCertificates
{
  "name": "ssl-certificate-name",
  "managed": {
    "domains": [
      "www.example.com"
    ]
  },
  "type": "MANAGED"
}

Verifica el estado de un certificado SSL administrado por Google

Consola

Puedes verificar el estado de tus certificados SSL globales en la pestaña Certificados clásicos de la página Administrador de certificados.

  1. Ve a la pestaña Certificados clásicos en la consola de Google Cloud.
    Ir a Certificados clásicos
  2. Filtra la lista de certificados SSL (opcional).
  3. Verifica la columna Estado.
  4. Para ver más detalles, haz clic en el nombre del certificado.

gcloud

Para determinar el estado de tu certificado administrado por Google, puedes usar los comandos gcloud compute. Después de ejecutar el comando adecuado, comprueba lo siguiente:

  • El estado administrado
  • El estado del dominio

Para enumerar tus certificados SSL administrados por Google, usa el comando gcloud compute ssl-certificates list con la marca --global.

gcloud compute ssl-certificates list \
   --global

Puedes usar el comando gcloud compute ssl-certificates describe y reemplazar CERTIFICATE_NAME:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
   --global \
   --format="get(name,managed.status, managed.domainStatus)"

En este punto, el estado del certificado y el estado del dominio son PROVISIONING. Tras completar los pasos de esta página, los estados cambian a ACTIVE.

Para obtener más información sobre los estados, consulta la página de solución de problemas.

Paso 2: Crea o actualiza el balanceador de cargas

Para convertirse en ACTIVE, el certificado SSL administrado por Google debe estar asociado con un balanceador de cargas, en particular, el proxy de destino del balanceador de cargas.

Después de crear tu certificado SSL y se encuentra en el estado PROVISIONING, puedes usarlo durante la creación de tu balanceador de cargas, como se describe en las siguientes guías prácticas:

También puedes usarlo para actualizar un balanceador de cargas existente, como se describe a continuación:

Consola

Cuando actualizas un balanceador de cargas de aplicación externo global o un balanceador de cargas de red de proxy externo mediante la consola de Google Cloud, Google Cloud asocia de forma automática el certificado SSL con el proxy de destino correcto.

  1. Ve a la página Balanceo de cargas en la consola de Google Cloud.
    Ir a Balanceo de cargas
  2. Haz clic en el nombre de tu balanceador de cargas.
  3. Haz clic en Editar .
  4. Haz clic en Configuración de frontend.
  5. Haz clic en el frontend correcto (debe ser HTTPS, HTTP/2 o SSL).
  6. Haz clic en Certificados adicionales y selecciona el certificado administrado por Google en la lista desplegable.
  7. Haz clic en Crear.

gcloud

A fin de asociar un certificado SSL con el proxy HTTPS de destino para un balanceador de cargas de aplicaciones externo global, usa el comando gcloud compute target-https-proxies update con las marcas --global-ssl-certificates y --global:

gcloud compute target-https-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST \
    --global-ssl-certificates \
    --global

A fin de asociar un certificado SSL con el proxy SSL de destino para un balanceador de cargas de red del proxy externo, usa el comando gcloud compute target-ssl-proxies update:

gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST

Reemplaza lo siguiente:

  • TARGET_PROXY_NAME: es el nombre del proxy de destino del balanceador de cargas.
  • SSL_CERTIFICATE_LIST: es una lista delimitada por comas de recursos de certificado SSL

    Asegúrate de que en la lista de certificados de referencia se incluya todos los certificados SSL válidos anteriores, así como el certificado SSL nuevo. El comando gcloud compute target-ssl-proxies update anula los valores originales de --ssl-certificates con el valor nuevo.

Terraform

Para crear el proxy HTTPS de destino, usa el recurso google_compute_target_https_proxy.

Para crear el proxy SSL de destino, usa el recurso google_compute_target_ssl_proxy.

resource "google_compute_target_https_proxy" "lb_default" {
  provider = google-beta
  name     = "myservice-https-proxy"
  url_map  = google_compute_url_map.lb_default.id
  ssl_certificates = [
    google_compute_managed_ssl_certificate.lb_default.name
  ]
  depends_on = [
    google_compute_managed_ssl_certificate.lb_default
  ]
}

Cada proxy HTTPS o proxy SSL de destino debe hacer referencia al menos a un certificado SSL. Un proxy de destino puede hacer referencia a más de un certificado SSL. Para obtener más información, consulta Grupos de destino y proxies de destino en los límites y las cuotas de recursos del balanceo de cargas.

Paso 3: Verifica la asociación del proxy de destino

Después de crear o actualizar el balanceador de cargas, puedes asegurarte de que el certificado SSL esté asociado con el proxy de destino del balanceador de cargas.

Si aún no conoces el nombre del proxy de destino, usa los comandos gcloud compute target-https-proxies list ygcloud compute target-ssl-proxies list para enumerar los proxies de destino en tu proyecto.

Verifica la asociación entre el certificado SSL y el proxy de destino mediante la ejecución del siguiente comando.

Balanceadores de cargas de aplicaciones externos globales:

gcloud compute target-https-proxies describe TARGET_HTTPS_PROXY_NAME \
    --global \
    --format="get(sslCertificates)"

Balanceadores de cargas de red del proxy externo:

gcloud compute target-ssl-proxies describe TARGET_SSL_PROXY_NAME \
    --format="get(sslCertificates)"

En este punto, es posible que el estado del certificado administrado por Google siga siendo PROVISIONING. Google Cloud está trabajando con la autoridad certificada para emitir el certificado. El aprovisionamiento de un certificado administrado por Google puede tomar hasta 60 minutos.

Paso 4: Actualiza los registros AAAA y A del DNS para que apunten a la dirección IP del balanceador de cargas

Tus registros DNS se pueden administrar en el sitio de tu registrador, host de DNS o ISP.

Cuando administres tus registros, ten en cuenta lo siguiente:

  • Asegúrate de que los registros A de DNS (para IPv4) y los registros AAAA DNS (para IPv6) para tus dominios y cualquier subdominio apunten a la dirección IP asociada con la regla o las reglas de reenvío del balanceador de cargas.

  • Si usas Cloud DNS, configura los dominios y actualiza los servidores de nombres.

  • Si tienes varios dominios en un certificado administrado por Google, agrega o actualiza registros DNS para todos los dominios y subdominios a fin de que apunten a la dirección IP del balanceador de cargas.

Los certificados administrados se aprovisionan de forma correcta cuando se cumplen las siguientes condiciones:

  • Los registros DNS de tu dominio utilizan un registro CNAME que apunta a otro dominio.
  • El otro dominio contiene un registro A o AAAA que apunta a la dirección IP del balanceador de cargas.

Para verificar tu configuración, ejecuta el comando dig. Por ejemplo, supongamos que el dominio es www.example.com. Ejecuta el siguiente comando dig:

dig www.example.com
; <<>> DiG 9.10.6 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31748
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.example.com.           IN  A

;; ANSWER SECTION:
www.example.com. 1742    IN      CNAME   example.net.
example.net.      12     IN      A       34.95.64.10

;; Query time: 43 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jun 03 16:54:44 PDT 2020
;; MSG SIZE  rcvd: 193

En este ejemplo 34.95.64.10 es la dirección IP del balanceador de cargas.

Los agentes de resolución de DNS en Internet están fuera del control de Google Cloud. Almacenan en caché tus conjuntos de registros de recursos según su tiempo de actividad (TTL), lo que significa que un comando dig o nslookup puede mostrar un valor almacenado en caché. Si usas Cloud DNS, consulta Propagación de cambios.

Tiempo de propagación del registro DNS

Los registros A y AAAA de DNS recién actualizados pueden tardar una cantidad de tiempo significativa en propagarse por completo. A veces, la propagación en Internet demora hasta 72 horas en todo el mundo, aunque suele tardar pocas horas.

Vuelve a ejecutar el siguiente comando:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --format="get(managed.domainStatus)"

Si el estado de tu dominio es FAILED_NOT_VISIBLE, es posible que la propagación no esté completa.

Para obtener información detallada, consulta la sección de estado del dominio del certificado SSL administrado por Google en la página Solución de problemas.

Paso 5: Prueba con OpenSSL

Una vez que los estados del certificado y del dominio estén activos, pueden pasar hasta 30 minutos hasta que el balanceador de cargas comience a usar el certificado SSL administrado por Google.

Para probar, ejecuta el siguiente comando de OpenSSL y reemplaza DOMAIN por el nombre del DNS y IP_ADDRESS por la dirección IP del balanceador de cargas.

echo | openssl s_client -showcerts -servername DOMAIN -connect IP_ADDRESS:443 -verify 99 -verify_return_error

Este comando da como resultado los certificados que el balanceador de cargas presenta al cliente. Junto con otra información detallada, el resultado debe incluir la cadena de certificados y Verify return code: 0 (ok).

Procedimientos adicionales

En esta sección, se incluyen procedimientos adicionales para administrar tus certificados.

Admite múltiples dominios con un certificado SSL administrado por Google

Se admiten varios nombres alternativos de entidad. Cada certificado SSL administrado por Google admite hasta la cantidad máxima de dominios por certificado SSL administrado por Google.

Si tienes más de la cantidad máxima de dominios, debes solicitar varios certificados administrados por Google. Por ejemplo, si intentas crear un certificado administrado por Google con (la cantidad máxima + 1) dominios, Google no emite ningún certificado. En cambio, debes crear dos o más certificados administrados por Google y especificar de forma explícita qué dominios están asociados con cada certificado.

Google Cloud implementa la indicación del nombre del servidor (SNI), como se define en RFC 6066.

Si alguno de los dominios o subdominios de un certificado administrado no dirige a la dirección IP del balanceador de cargas, el proceso de renovación falla. Para evitar que falle la renovación, asegúrate de que todos los dominios y los subdominios apunten a la dirección IP del balanceador de cargas.

Renueva un certificado SSL administrado por Google

Google Cloud aprovisiona certificados administrados con una validez de 90 días. Alrededor de un mes antes del vencimiento, el proceso para renovar el certificado comienza de forma automática. Para esto, se elige una autoridad certificadora (CA) que esté en el registro DNS de la autorización de autoridad certificadora de tu dominio (CAA) y en la lista de CA.

La CA que se usa en la renovación puede ser no ser la misma que se usó para emitir una versión anterior del certificado administrado por Google. Puedes controlar la CA que usa Google Cloud para la renovación si te aseguras de que el registro DNS de la autorización de autoridad certificadora (CAA) del dominio especifique una sola CA de la lista de CA que usan los certificados administrados por Google.

Si alguno de los dominios o subdominios de un certificado administrado no dirige a la dirección IP del balanceador de cargas, el proceso de renovación falla. Para evitar que falle la renovación, asegúrate de que todos los dominios y los subdominios apunten a la dirección IP del balanceador de cargas.

Especifica las CA que pueden emitir tu certificado administrado por Google

En tu software DNS, te recomendamos autorizar de manera explícita las CA que quieres permitir que emitan el certificado administrado por Google. Si bien no es obligatorio en todas las situaciones, es necesario en ciertas situaciones.

Por ejemplo, si usas un servicio de DNS externo y se revoca el certificado administrado por Google, el servicio solo podría validar un certificado nuevo emitido por una o más CA específicas.

Para ello, crea o modifica un registro de CAA a fin de incluir pki.goog, letsencrypt.org o ambos. Si no tienes un registro de CAA, el comportamiento predeterminado es permitir pki.goog y letsencrypt.org.

DOMAIN. CAA 0 issue "pki.goog"
DOMAIN. CAA 0 issue "letsencrypt.org"

La compatibilidad con los certificados de letsencrypt.org se proporciona en función del mejor esfuerzo. Para obtener la mejor confiabilidad, permite pki.goog y letsencrypt.org. Si especificas solo una de las CA, esa será la única que se usará para crear y renovar el certificado: No se recomienda optar por ese método.

Cuando creas un certificado por primera vez, Google Cloud selecciona pki.goog o letsencrypt.org, y lo usa para emitir el certificado. Cuando Google renueva el certificado, la otra CA puede emitirlo, según las CA que hayas especificado en el registro de CAA (si creaste uno). Es posible que el certificado se renueve con una CA diferente en cualquiera de los siguientes casos:

  • No tienes un registro DNS de CAA para el dominio.
  • Incluiste ambas CA en el registro DNS de CAA.

Para obtener más información, consulta el RFC, Registro DNS de CAA.

letsencrypt.org emite nombres de dominio internacionalizados (IDN). pki.goog actualmente no es compatible con los IDN.

Si usas Cloud DNS, obtén información sobre cómo agregar un registro y asegúrate de establecer la marca --type en CAA.

Reemplaza un certificado SSL existente

Para reemplazar un certificado SSL existente, sigue estos pasos:

  1. Inicia el proceso de creación del certificado SSL administrado por Google de reemplazo. Este certificado no se vuelve ACTIVO en este momento.

  2. Actualiza el proxy de destino para que la lista de certificados de referencia incluya el certificado SSL de reemplazo junto con los certificados SSL actuales. Los pasos para actualizar el proxy de destino varían, como se indica en los siguientes vínculos:

  3. Espera a que se complete el aprovisionamiento del certificado SSL. Este proceso puede llevar hasta 60 minutos. Cuando se completa el aprovisionamiento, el estado del certificado se convierte en ACTIVE.

  4. Espera 30 minutos más a fin de asegurarte de que el certificado de reemplazo esté disponible para todos los Google Front Ends (GFE).

  5. Actualiza el proxy de destino para quitar el certificado SSL que deseas reemplazar de la lista de certificados de referencia. Los pasos para actualizar el proxy de destino varían, como se indica en los siguientes vínculos:

  6. Espera 10 minutos y confirma que el balanceador de cargas use el certificado SSL de reemplazo en lugar del anterior.

  7. Vuelve a actualizar el proxy de destino y quita el recurso del certificado SSL anterior. Puedes borrar el recurso del certificado SSL si ningún proxy de destino hace referencia a él.

Si no borras el certificado SSL anterior, permanecerá activo hasta que venza.

Cambia de certificados SSL autoadministrados a certificados SSL administrados por Google

Cuando haces que un balanceador de cargas deje de usar certificados SSL autoadministrados y comience a usar certificados SSL administrados por Google, debes realizar los siguientes pasos en esta secuencia:

  1. Crea un nuevo certificado administrado por Google.
  2. Asocia un nuevo certificado administrado por Google con el proxy de destino correcto mientras se mantiene la asociación del proxy de destino con el certificado autoadministrado existente.
  3. Espera hasta que el estado del certificado administrado por Google sea ACTIVE.
  4. Espera 30 minutos para permitir que el nuevo certificado se propague a los Google Front Ends (GFE) a cargo de la entrega.
  5. Vuelve a actualizar el proxy de destino y quita el recurso del certificado autoadministrado. Puedes borrar el recurso del certificado SSL autoadministrado si ningún proxy de destino hace referencia a él.

Borrar un certificado SSL

Antes de borrar un certificado SSL, asegúrate de que ningún proxy de destino SSL o HTTPS haga referencia a este certificado. Puedes hacerlo de dos maneras:

Para borrar uno o más certificados SSL, sigue estos pasos:

Consola

Puedes borrar certificados SSL globales en la pestaña Certificados clásicos de la página Administrador de certificados.

  1. Ve a la pestaña Certificados clásicos en la consola de Google Cloud.
    Ir a Certificados clásicos
  2. Selecciona el certificado SSL que deseas borrar.
  3. Haz clic en Borrar.
  4. Para confirmar la acción, vuelve a hacer clic en Borrar.

gcloud

A fin de borrar un certificado SSL global (para balanceadores de cargas de aplicaciones externos globales o balanceadores de cargas de red de proxy externos), usa el comando gcloud compute ssl-certificates delete con el comando --global:

gcloud compute ssl-certificates delete CERTIFICATE_NAME \
    --global

Reemplaza lo siguiente:

  • CERTIFICATE_NAME: es el nombre del certificado SSL

¿Qué sigue?

  • Para solucionar problemas de certificados SSL, consulta Soluciona problemas con los certificados SSL.
  • Si quieres usar una secuencia de comandos de Terraform que crea un certificado administrado por Google, consulta el ejemplo de Cloud Run en la página Ejemplos de módulos de Terraform para balanceadores de cargas de aplicaciones externos.