En este instructivo, se explica el proceso de implementación de certificados mediante un certificado administrado por Google con autorización de DNS como ejemplo.
Los siguientes balanceadores de cargas admiten certificados administrados por Google con autorización de DNS:
- 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
Para ver una comparación de los tipos de autorización de dominio admitidos, consulta Autorizaciones de dominio.
Si deseas migrar un certificado existente al Administrador de certificados, sigue los pasos que se indican en Migra 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 autoridad certificadora de confianza pública con autorización de DNS 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.
Antes de comenzar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Se requiere la versión
465.0.0
o posterior de gcloud CLI para implementar el certificado. Para verificar tu versión de gcloud CLI, ejecuta el siguiente comando:gcloud --version
Para actualizar gcloud CLI, ejecuta el siguiente comando.
gcloud components update
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 los recursos del Administrador de certificados.
- Administrador del balanceador de cargas de Compute o Administrador de red de Compute: Es obligatorio para crear y administrar el proxy de destino HTTPS.
- Administrador de DNS: es obligatorio si deseas usar Cloud DNS como solución de DNS.
Para obtener más información, consulta lo siguiente:
- Funciones y permisos del Administrador de certificados
- Funciones y permisos de IAM de Compute Engine para Compute Engine
- Control de acceso con la IAM para Cloud DNS
Crea un certificado administrado por Google con autorización de DNS
Completa los pasos de esta sección para crear una autorización de DNS y un certificado administrado por Google que haga referencia a esa autorización de DNS.
Crea una autorización de DNS
Crea la autorización de DNS como se describe en esta sección. Si creas una autorización de DNS para un certificado comodín, como *.myorg.example.com
, configura la autorización de DNS para el dominio superior, por ejemplo, myorg.example.com
.
gcloud
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Para usar la autorización de DNS por proyecto (vista previa), ejecuta el siguiente comando:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type="PER_PROJECT_RECORD" gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Reemplaza lo siguiente:
AUTHORIZATION_NAME
: Es el nombre de la autorización de DNS.DOMAIN_NAME
: Es el nombre del dominio para el que estás creando esta autorización de DNS. El nombre de dominio debe ser un nombre de dominio completamente calificado, comomyorg.example.com
.
El comando muestra un resultado similar al siguiente. Usa el registro CNAME del resultado para agregar elementos a tu configuración de DNS.
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge.myorg.example.com. type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
Terraform
Para crear una autorización de DNS, puedes usar un recurso google_certificate_manager_dns_authorization
.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega el registro CNAME a tu configuración de DNS
Si usas Google Cloud para administrar tu DNS, completa los pasos que se indican en esta sección. De lo contrario, consulta la documentación de tu solución de DNS de terceros.
Antes de completar los pasos de esta sección, asegúrate de haber creado una zona DNS pública.
Cuando creas una autorización de DNS, el comando de gcloud CLI muestra el registro CNAME correspondiente. Debes agregar este registro CNAME a tu configuración de DNS en la zona del DNS del dominio de destino de la siguiente manera:
gcloud
- Inicia la transacción del registro DNS:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
Reemplaza DNS_ZONE_NAME
por el nombre de la zona del DNS de destino.
- Agrega el registro CNAME a la zona del DNS de destino:
gcloud dns record-sets transaction add CNAME_RECORD \ --name="_acme-challenge.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"
Reemplaza lo siguiente:
CNAME_RECORD
: Es el valor completo de los datos del registro CNAME que muestra el comando de Google Cloud CLI que creó la autorización de DNS correspondiente.DOMAIN_NAME
: Es el nombre del dominio de destino. El nombre de dominio debe ser un nombre de dominio completamente calificado, comomyorg.example.com
. También debes incluir el punto final después del nombre de dominio de destino.DNS_ZONE_NAME
: Es el nombre de la zona del DNS de destino.
Consulta el siguiente ejemplo:
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"
- Ejecuta la transacción del registro DNS para guardar los cambios:
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
Reemplaza DNS_ZONE_NAME
por el nombre de la zona del DNS de destino.
Terraform
Para agregar el registro CNAME a tu configuración de DNS, puedes usar un recurso google_dns_record_set
.
Crea un certificado administrado por Google que haga referencia a la autorización de DNS
Para crear un certificado administrado por Google que haga referencia a la autorización de DNS que creaste en los pasos anteriores, haz lo siguiente:
Console
En la consola de Google Cloud, ve a la página Administrador de certificados.
En la página que aparece, selecciona la pestaña Certificados.
Haz clic en Agregar certificado.
Ingresa un Nombre para el certificado.
Este nombre debe ser único para el proyecto.
Opcional: Ingresa la Descripción del certificado. La descripción te ayuda a identificar un certificado específico más adelante.
En Ubicación, elige Global.
En Alcance, elige cualquiera de las siguientes opciones:
- Predeterminado: Elige la configuración predeterminada para el balanceador de cargas de aplicaciones externo global, el balanceador de cargas de aplicaciones clásico o el balanceador de cargas de red del proxy externo global.
- All-regions (Todas las regiones): Elige todas las regiones para un balanceador de cargas de aplicaciones interno entre regiones.
En Tipo de certificado, elige Crear certificado administrado por Google.
En Tipo de autoridad certificadora, selecciona Pública.
Especifica los Nombres de dominio del certificado. Ingresa una lista delimitada por comas de los dominios de destino. Además, cada nombre de dominio debe ser un nombre de dominio completamente calificado, como
myorg.example.com
.En Tipo de autorización, elige Autorización de DNS. Si el nombre de dominio tiene una autorización de DNS asociada, se seleccionará automáticamente. Si el nombre de dominio no tiene una autorización de DNS asociada, haz lo siguiente:
- Haz clic en Crear autorización de DNS faltante para mostrar el cuadro de diálogo Crear autorización de DNS.
- En el campo Nombre de autorización de DNS, especifica el nombre de autorización de DNS.
- Haz clic en Crear autorización de DNS. Verifica que el nombre de DNS se asocie al nombre de dominio.
Especifica una etiqueta para asociar al certificado. Puedes agregar más de una etiqueta, si es necesario. Para agregar una etiqueta, haz clic en el botón add_box Agregar etiqueta y especifica una
key
y unavalue
para tu etiqueta.Haz clic en Crear. Verifica que el certificado nuevo aparezca en la lista de certificados.
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 de proxy externo global:
Ejecuta el siguiente comando:
gcloud certificate-manager certificates create CERTIFICATE_NAME
--domains=DOMAIN_NAME
--dns-authorizations=AUTHORIZATION_NAME
Reemplaza lo siguiente:
CERTIFICATE_NAME
: Es un nombre único del certificado.DOMAIN_NAME
: Es el dominio de destino del certificado. El nombre de dominio debe ser un nombre de dominio completamente calificado, comomyorg.example.com
.AUTHORIZATION_NAME
: Es el nombre de la autorización de DNS que creaste para este certificado.
Para crear un certificado administrado por Google con un nombre de dominio comodín, usa el siguiente comando. Un certificado de nombre de dominio comodín abarca todos los subdominios de primer nivel de un dominio determinado.
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="*.DOMAIN_NAME,DOMAIN_NAME" \ --dns-authorizations=AUTHORIZATION_NAME
Reemplaza lo siguiente:
CERTIFICATE_NAME
: Es un nombre único del certificado.DOMAIN_NAME
: Es el dominio de destino del certificado. El prefijo de punto de asterisco (*.
) significa un certificado comodín. El nombre de dominio debe ser un nombre de dominio completamente calificado, comomyorg.example.com
.AUTHORIZATION_NAME
: Es el nombre de la autorización de DNS que creaste para este certificado.
Para un balanceador de cargas de aplicaciones interno entre regiones:
Ejecuta el siguiente comando:
gcloud certificate-manager certificates create CERTIFICATE_NAME
--domains=DOMAIN_NAME
--dns-authorizations=AUTHORIZATION_NAME
--scope=all-regions
Reemplaza lo siguiente:
CERTIFICATE_NAME
: Es un nombre único del certificado.DOMAIN_NAME
: Es el dominio de destino del certificado. El nombre de dominio debe ser un nombre de dominio completamente calificado, comomyorg.example.com
.AUTHORIZATION_NAME
: Es el nombre de la autorización de DNS que creaste para este certificado.
Para crear un certificado administrado por Google con un nombre de dominio comodín, usa el siguiente comando. Un certificado de nombre de dominio comodín abarca todos los subdominios de primer nivel de un dominio determinado.
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="*.DOMAIN_NAME,DOMAIN_NAME" \ --dns-authorizations=AUTHORIZATION_NAME \ --scope=all-regions
Reemplaza lo siguiente:
CERTIFICATE_NAME
: Es un nombre único del certificado.DOMAIN_NAME
: Es el dominio de destino del certificado. El prefijo de punto de asterisco (*.
) significa un certificado comodín. El nombre de dominio debe ser un nombre de dominio completamente calificado, comomyorg.example.com
.AUTHORIZATION_NAME
: Es el nombre de la autorización de DNS que creaste para este certificado.
Terraform
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 hasta varias horas en cambiar a ACTIVE
.
gcloud certificate-manager certificates describe CERTIFICATE_NAME
Reemplaza CERTIFICATE_NAME
por el nombre del certificado de destino administrado por Google.
El comando muestra un resultado similar al siguiente:
expireTime: '2022-05-07T05:03:49Z' managed: authorizationAttemptInfo: - domain: myorg.example.com state: AUTHORIZED dnsAuthorizations: - projects/my-project/locations/global/dnsAuthorizations/myAuth domains: - myorg.example.com state: ACTIVE name: projects/myProject/locations/global/certificates/myCert pemCertificate: | -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- 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 que se enumeran en la sección Crea un certificado administrado por Google con autorización de DNS.
Según el tipo de balanceador de cargas, puedes implementar certificados de la siguiente manera:
- Para los siguientes balanceadores de cargas, implementa el certificado mediante un mapa de certificados:
- Balanceador de cargas de aplicaciones externo global
- Balanceador de cargas de red del proxy externo global
- Balanceador de cargas de aplicaciones clásico
- Para el balanceador de cargas de aplicaciones interno entre regiones, implementa el certificado conéctalo directamente al proxy de destino.
Implementa el certificado usando 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
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
Reemplaza CERTIFICATE_MAP_NAME
por el nombre del mapa de certificados de destino.
Terraform
Para crear un mapa de certificados, puedes usar un recurso google_certificate_manager_certificate_map
.
Crea una entrada del mapa de certificados
Crea una entrada de mapa de certificados y asóciala con tu certificado 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 de la 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 deseas asociar con esta entrada del mapa de certificados.HOSTNAME
: Es el nombre de host que deseas asociar con esta entrada del mapa de certificados.
Terraform
Para crear una entrada de mapa de certificados, puedes usar un recurso google_certificate_manager_certificate_map_entry
.
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 de la entrada del mapa del certificado de destino.CERTIFICATE_MAP_NAME
: Es el nombre del mapa de certificados al que se adjunta esta entrada del mapa de certificados.
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
Conecta el mapa de certificados configurado al proxy de destino:
gcloud
En la consola de Google Cloud, ve a la página Proxies de destino.
Anota el nombre del proxy de destino.
Conecta el mapa de certificados al proxy de destino:
gcloud compute target-https-proxies update PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --global
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 la entrada del mapa de certificados y al certificado asociado.
Terraform
Para adjuntar el mapa de certificados al proxy de destino, puedes usar un recurso google_compute_target_https_proxy
.
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 sobre los certificados TLS (SSL) adjuntos directamente.
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.
Limpia
Para revertir los cambios que realizaste en este instructivo, completa los siguientes pasos:
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 se reanude con el uso de esos certificados TLS (SSL) conectados directamente.
- Si no había certificados TLS (SSL) adjuntos directamente al proxy, el mapa de certificados no se puede desconectar del proxy. Primero, debes adjuntar al menos un certificado TLS (SSL) directamente al proxy antes de poder separar 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
Reemplaza
PROXY_NAME
por el nombre del proxy de destino.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 del certificado de destino.CERTIFICATE_MAP_NAME
: Es el nombre del mapa de certificados de destino.
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.Borra el certificado administrado por Google:
gcloud certificate-manager certificates delete CERTIFICATE_NAME
Reemplaza
CERTIFICATE_NAME
por el nombre del certificado de destino.Borra la autorización de DNS:
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
Reemplaza
AUTHORIZATION_NAME
por el nombre de la autorización de DNS de destino.