Solicitar un certificado mediante una AC pública y un cliente ACME
En este tutorial se explica cómo solicitar un certificado TLS con una entidad pública emisora de certificados mediante la CLI de Google Cloud. Para obtener información sobre las ACs raíz e intermedias que usa la autoridad de certificación pública, consulta Google Trust Services. No se cobra nada por solicitar certificados de una AC pública.
Antes de empezar
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
Asegúrate de que tienes el rol de gestión de identidades y accesos Creador de claves de cuenta externa de AC pública (
roles/publicca.externalAccountKeyCreator
).Para conceder este rol, ejecuta el siguiente comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USER \ --role=roles/publicca.externalAccountKeyCreator
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu Google Cloud proyectoUSER
: el identificador único del usuario al que quieres asignar el rol de gestión de identidades y accesos
Para obtener información sobre cómo conceder un rol de gestión de identidades y accesos, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Enable the Public CA API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable publicca.googleapis.com
Instalar un cliente
Para empezar a usar una AC pública, debes instalar un cliente ACME. En las siguientes instrucciones se usa Certbot como cliente de ACME. Puedes usar cualquier otro cliente de ACME si admite la vinculación de cuentas externas (EAB).
Para instalar Certbot, consulta las instrucciones de Certbot.
Asegúrate de dirigir tu cliente al servidor de la AC pública. La primera vez que el cliente ACME interactúa con la AC pública, el cliente genera un nuevo par de claves y envía la clave pública a la AC pública.
Solicitar un ID de clave de EAB y una clave HMAC
Después de instalar un cliente ACME, debes registrar tu cuenta ACME en una AC pública para solicitar certificados a esa AC. Un secreto de EAB puede ayudarte a registrar tu cuenta de ACME con una AC pública. Un secreto de EAB consta de un ID de clave y un código de autenticación de mensajes basado en hash (HMAC).
Puedes usar la API de CA pública o la CLI de Google Cloud para solicitar un secreto de EAB.
Para solicitar un ID de clave EAB y un HMAC, ejecuta el siguiente comando:
gcloud publicca external-account-keys create
Este comando devuelve un secreto de EAB válido en el entorno de producción de la AC pública. En el cuerpo de la respuesta, el campo keyId
contiene el ID de la clave de EAB y el campo b64MacKey
contiene el HMAC de EAB.
Debes usar un secreto de EAB en un plazo de 7 días a partir de su obtención. El secreto de EAB se invalida si no lo usas en un plazo de 7 días. La cuenta de ACME registrada mediante un secreto de EAB no tiene fecha de vencimiento.
Registrar una cuenta ACME
En esta sección se explica cómo registrar una cuenta ACME en una autoridad de certificación pública proporcionando el secreto EAB que acabas de obtener.
Utiliza un cliente de ACME normal para registrar una cuenta de ACME y proporciona el ID de clave EAB y la clave HMAC durante el registro.
Para registrar una cuenta de ACME con una AC pública y vincularla al Google Cloud proyecto que has usado para solicitar el secreto de EAB, ejecuta el siguiente comando:
certbot register \ --email "EMAIL_ADDRESS" \ --no-eff-email \ --server "SERVER" \ --eab-kid "EAB_KID" \ --eab-hmac-key "EAB_HMAC_KEY"
Haz los cambios siguientes:
EMAIL_ADDRESS
: tu dirección de correoSERVER
: la URL del directorio ACME del entorno de producción o de pruebasEAB_KID
: el ID de clave de EABEAB_HMAC_KEY
: la clave HMAC de EAB
En la siguiente tabla se proporciona la descripción y la URL del directorio ACME para el entorno de producción y el de pruebas:
Entorno | Descripción | URL del directorio ACME |
---|---|---|
Producción | El entorno de producción te permite obtener certificados de confianza públicos. | https://dv.acme-v02.api.pki.goog/directory |
Staging | El entorno de staging devuelve certificados que no son de confianza pública. El entorno de staging realiza las mismas comprobaciones de validación que el entorno de producción. Puedes usar el entorno de preproducción para la integración o cualquier otro tipo de prueba. | https://dv.acme-v02.test-api.pki.goog/directory |
Solo puedes registrar una cuenta ACME con un secreto de EAB. Una vez que hayas registrado una cuenta ACME con un secreto EAB, este dejará de ser válido y no podrás volver a usarlo. Si quieres registrar varias cuentas ACME, debes solicitar un secreto EAB único para cada una de ellas.
Solicitar certificados
Una vez que la autoridad de certificación pública valide que tienes el control del destino del certificado y confirme que tu cliente de ACME funciona correctamente para realizar operaciones de gestión de certificados, podrás usar los flujos de trabajo habituales de ACME para solicitar, renovar y revocar certificados. Puedes realizar estas operaciones con tu cliente ACME. Para solicitar y renovar un certificado, debes completar un desafío ACME, como el desafío de DNS manual.
Para usar el reto de DNS manual para solicitar un certificado, ejecuta el siguiente comando:
certbot certonly \ --manual \ --preferred-challenges "dns-01" \ --server "SERVER" \ --domains "DOMAINS"
Haz los cambios siguientes:
SERVER
: la URL del directorio ACME del entorno de producción o de pruebasDOMAINS
: lista de dominios separados por comas para los que solicitas certificados
Limpieza
Si ya no necesitas certificados para tus dominios, elimina el proyecto que has creado.
Staging
Puede usar el entorno de staging de la AC pública para solicitar certificados con fines de prueba. Los certificados emitidos por el entorno de staging se encadenan hasta una AC raíz de prueba. Los navegadores u otros clientes que no se hayan configurado para confiar en el certificado raíz del entorno de pruebas no confiarán en los certificados de dicho entorno. Para obtener un secreto de EAB válido en el entorno de staging, sustituye el endpoint de la API por el endpoint del entorno de staging:
gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
gcloud publicca external-account-keys create
gcloud config unset api_endpoint_overrides/publicca
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID