Configurar certificados SSL (TLS)

Una vez que hayas creado un servicio de Media CDN (o varios), podrás emitir y adjuntar certificados SSL (TLS) para admitir la conectividad segura en navegadores y aplicaciones móviles.

Emitir un certificado gestionado

Para crear un certificado gestionado y adjuntarlo a tu servicio Media CDN, debes hacer lo siguiente:

  1. Demuestra que eres el propietario (es decir, que tienes autorización) de los dominios para los que quieres emitir certificados creando un token de verificación y añadiendo un registro DNS.
  2. Crea un certificado de tipo EDGE_CACHE con uno o varios nombres de dominio basados en esa autorización.
  3. Adjunta ese certificado a uno o varios servicios de caché perimetral.

Debes tener los siguientes permisos de Gestión de Identidades y Accesos para autorizar, crear y adjuntar certificados a un servicio Edge Cache:

  • certificatemanager.certs.create
  • certificatemanager.certs.get
  • certificatemanager.certs.list
  • certificatemanager.certs.use
  • certificatemanager.dnsauthorizations.create
  • certificatemanager.dnsauthorizations.get
  • certificatemanager.dnsauthorizations.list
  • certificatemanager.dnsauthorizations.use

Los usuarios que necesiten adjuntar un certificado ya creado a un servicio de Media CDN requieren los permisos de gestión de identidades y accesos certificatemanager.certs.get, certificatemanager.certs.list y certificatemanager.certs.use.

Antes de empezar

Crear una autorización de DNS

Primero, debes crear una autorización de DNS para demostrar que eres el propietario del dominio antes de poder emitir certificados para él. La autorización de DNS usa el reto DNS-01 ACME y te permite emitir un certificado antes de dirigir el tráfico visible para los usuarios a tu servicio Edge Cache.

Asigna el valor domain al nombre de dominio para el que quieras crear un certificado, como se indica a continuación:

comprobar la versión y actualizar la CLI de Google Cloud que tengas instalada.

gcloud

Usa el comando gcloud certificate-manager dns-authorizations:

gcloud certificate-manager dns-authorizations create DOMAIN_NAME_AUTH \
    --domain="DOMAIN_NAME"
gcloud certificate-manager dns-authorizations describe DOMAIN_NAME_AUTH

La CLI de gcloud devuelve una respuesta con los detalles del registro DNS que debes añadir.

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

Terraform

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "example-dns-auth"
  description = "example dns authorization "
  domain      = "test.example.com"
}

Si usas Cloud DNS para tu dominio, consulta los pasos para añadir un nuevo registro a tu dominio alojado. Si usas otro proveedor de DNS, consulta su documentación para añadir un registro CNAME.

  • Puede repetir este paso con cada dominio para el que necesite emitir un certificado.
  • Los certificados pueden contener varios dominios o puedes emitir un certificado por dominio, según sea necesario. Una vez que tengas una autorización para un dominio, podrás usarla para emitir certificados.
  • Te recomendamos que crees menos certificados en total, pero que cada uno de ellos incluya todos los nombres de dominio que se utilicen en tu servicio. De esta forma, se mejora el rendimiento del cliente cuando se usan varios dominios, ya que los clientes pueden beneficiarse de la reanudación de TLS con más frecuencia.
  • Cada servicio de almacenamiento en caché perimetral puede hacer referencia a un máximo de cinco certificados. Si emites menos certificados, podrás mantenerte dentro de este límite.

Si necesitas recuperar los valores del registro DNS más adelante, envía una solicitud para obtener el authorizationName que proporcionaste al crear la autorización de DNS:

Crear un certificado

Una vez que haya añadido el registro DNS que demuestre la propiedad de los dominios para los que quiera crear un certificado, podrá enviar una solicitud de creación de certificado.

La lista de dnsAuthorizations debe coincidir con los nombres de las autorizaciones que hayas creado anteriormente. Si quiere añadir varios dominios al mismo certificado, proporcione una lista de domains[] y dnsAuthorizations[] coincidentes al hacer la solicitud.

Para crear un certificado mediante una autorización para test.example.com llamada test-example-com, sigue estos pasos:

gcloud

Usa el comando gcloud certificate-manager certificates:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME" \
    --dns-authorizations="DOMAIN_NAME_AUTH" \
    --scope=EDGE_CACHE

De esta forma, se crea un certificado con cada autorización de DNS en el estado AUTHORIZING y el certificado en el estado PROVISIONING:

Create request issued for: [DOMAIN_NAME]
Waiting for operation [projects/my-project/locations/global/operations/operatio
n-1613425627385-5bb66ed644e91-3e2a2f1f-71979cf8] to complete...done.
Created certificate [CERTIFICATE_NAME].

Terraform

resource "google_certificate_manager_certificate" "default" {
  name        = "example-dns-cert"
  description = "example dns certificate"
  scope       = "EDGE_CACHE"
  managed {
    domains = [
      google_certificate_manager_dns_authorization.default.domain,
    ]
    dns_authorizations = [
      google_certificate_manager_dns_authorization.default.id,
    ]
  }
}

La creación del certificado puede tardar unos minutos (hasta una hora) en completarse, en función de lo siguiente:

  • La rapidez con la que tu proveedor de DNS propaga los cambios de configuración.
  • Cuántos dominios intentas validar y para cuántos quieres crear certificados.

En el campo state se muestra el estado actual del certificado:

  • APROVISIONAMIENTO: el certificado aún se está aprovisionando. Es probable que se deba a que la solicitud de creación del certificado se haya enviado hace poco.
  • FAILED (ERROR): se devuelve después de varios intentos de validar el dominio o emitir el certificado. Para obtener más información, consulta los campos provisioning_issue, authorization_attempt_info y failure_reason.
  • ACTIVO: el dominio se ha validado correctamente y el certificado se ha aprovisionado.

Para comprobar el estado del certificado, sigue estos pasos:

gcloud

Usa el comando gcloud certificate-manager certificates:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

En este ejemplo, la autorización de DNS es AUTHORIZED y el estado del certificado es ACTIVE:

createTime: '2021-02-07T20:03:39.867762684Z'
expireTime: '2021-03-09T19:20:41Z'
managed:
  authorizationAttemptInfo:
  - domain: DOMAIN_NAME
    state: AUTHORIZED
  dnsAuthorizations:
  - projects/111111111111/locations/global/dnsAuthorizations/test-example-com
  domains:
  - DOMAIN_NAME
  state: ACTIVE
name: projects/my-project/locations/global/certificates/test-example-com
scope: EDGE_CACHE
subjectAlternativeNames:
- DOMAIN_NAME
updateTime: '2021-02-07T20:03:40.297242738Z'

Una vez que se haya ACTIVE el certificado, puedes adjuntarlo a un servicio de caché de Edge.

Adjuntar un certificado a un servicio

Una vez que hayas creado un certificado gestionado, podrás asociarlo a uno o varios de tus servicios Edge Cache. Los certificados se pueden adjuntar a servicios nuevos y ya creados. Para ello, actualiza la lista de edgeSslCertificates del servicio.

Debes tener los siguientes permisos de gestión de identidades y accesos para adjuntar certificados a un servicio Edge Cache:

  • certificatemanager.certs.get
  • certificatemanager.certs.list
  • certificatemanager.certs.use
  • networkservices.edgeCacheServices.get
  • networkservices.edgeCacheServices.list
  • networkservices.edgeCacheServices.update

Para adjuntar un certificado a un servicio, sigue estos pasos:

gcloud

Ejecuta el comando gcloud edge-cache services export para exportar el archivo YAML de tu servicio:

gcloud edge-cache services export MY_SERVICE \
    --destination=my-service.yaml

Edita el archivo YAML exportado para añadir tu certificado:

name: MY_SERVICE
edgeSslCertificates:
- projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Ejecuta el comando gcloud edge-cache services import:

gcloud edge-cache services import MY_SERVICE \
    --source=my-service.yaml

Resultado:

Request issued for: [MY_SERVICE]
Updated service [MY_SERVICE]

El comando devuelve una descripción de tu servicio, incluida la lista de edgeSslCertificates que ahora está adjunta:

  name: MY_SERVICE
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Después de actualizar la configuración, el certificado se propagará a todas las ubicaciones perimetrales en cuestión de minutos. Para comprobar que el certificado está asociado a tu servicio Edge Cache antes de hacer cambios en el DNS, puedes enviar una solicitud a la dirección IPv4 o IPv6 asociada a tu servicio.

Reemplazar y quitar certificados

Para añadir y quitar certificados, actualice la lista de certificados.

Cuando se usa la marca --edge-ssl-certificate de gcloud CLI, los certificados solo se añaden a la lista de certificados que ya hay, no se sustituyen. De esta forma, evitarás eliminar por error un certificado válido y activo.

Para quitar el certificado test-example-com de nuestro servicio en el siguiente ejemplo, puedes exportar tu servicio a YAML con los comandos de importación y exportación.

  name: my-service
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/test-example-com
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

En los siguientes comandos se muestra cómo exportar el servicio, quitar la referencia del certificado e importar el servicio actualizado.

gcloud

Usa el comando gcloud edge-cache services:

gcloud edge-cache services export MY_SERVICE --destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/MY_SERVICE] to 'my-service.yaml'.

Elimina los certificados que ya no quieras que utilice el servicio con tu editor de texto preferido:

  name: MY_SERVICE
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Guarda el archivo modificado y, a continuación, importa el servicio actualizado:

gcloud

Usa el comando gcloud edge-cache services:

gcloud edge-cache services import MY_SERVICE --source=my-service.yaml
Request issued for: [MY_SERVICE]
Updated service [MY_SERVICE].

No hay límite en el número de servicios a los que se puede asociar un certificado, y cada servicio de caché perimetral puede hacer referencia a un máximo de cinco certificados.

Certificados autogestionados

Puedes subir tus propios certificados a Media CDN si tienes casos de uso específicos que lo requieran.

Para subir un certificado y su clave asociada a Certificate Manager, sigue estos pasos:

gcloud

Usa el comando gcloud certificate-manager certificates. Asegúrate de especificar --scope=EDGE_CACHE para los certificados asociados a Media CDN.

gcloud certificate-manager certificates create stream-example-com \
    --certificate-file=CERT.pem \
    --private-key-file=PRIVATE_KEY.pem \
    --scope=EDGE_CACHE
Create request issued for: [stream-example-com]
Created certificate [stream-example-com].

Una vez que se haya subido el certificado, puedes adjuntarlo a un EdgeCacheService como lo harías con un certificado gestionado.

Solucionar problemas de emisión de certificados

Consulta la guía de solución de problemas para saber cómo resolver los errores habituales de autorización y emisión de certificados.

Siguientes pasos