Solicita un certificado con Public CA y un cliente de ACME

En este instructivo, se explica cómo solicitar un certificado TLS con Public Certificate Authority con Google Cloud CLI. Para obtener información sobre las AC raíz y las intermedias que usa Public Certificate Authority, consulta Google Trust Services. No se aplican cargos por solicitar certificados de Public CA, aunque las operaciones de ACME están sujetas a las cuotas de solicitudes de Public CA.

Antes de comenzar

  • Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:

    gcloud init

  • Crea o selecciona un proyecto de Google Cloud .

    Roles necesarios para seleccionar o crear un proyecto

    • Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
    • Crea un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos (roles/resourcemanager.projectCreator), que contiene el permiso resourcemanager.projects.create. Obtén más información para otorgar roles.
    • Crea un proyecto de Google Cloud :

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre de tu proyecto de Google Cloud .

  • Asegúrate de tener el rol de IAM de creador de claves de cuentas externas de la CA pública (roles/publicca.externalAccountKeyCreator).

    Para otorgar este rol, ejecuta el siguiente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:USER \
      --role=roles/publicca.externalAccountKeyCreator
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • USER: Es el identificador único del usuario al que deseas asignar el rol de IAM.

    Para obtener información sobre cómo otorgar un rol de IAM, consulta Administra el acceso a proyectos, carpetas y organizaciones.

  • Habilita la API de Public CA si aún no está habilitada:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

    gcloud services enable publicca.googleapis.com

Instala un cliente

Para comenzar a usar Public CA, debes instalar un cliente de ACME. En las siguientes instrucciones, se usa Certbot como el cliente de ACME. Puedes usar cualquier otro cliente de ACME si este 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 Public CA. La primera vez que el cliente de ACME interactúa con Public CA, el cliente genera un par de claves nuevo y envía la clave pública a la AC pública.

Solicita un ID de clave de EAB y una HMAC

Después de instalar un cliente de ACME, debes registrar tu cuenta de ACME en Public CA para solicitar certificados de la AC pública. Un secreto de EAB puede ayudarte a registrar tu cuenta de ACME en Public CA. 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 la AC pública o la Google Cloud CLI para solicitar un secreto de EAB.

Para solicitar un ID de clave de EAB y un HMAC, ejecuta el siguiente comando:

gcloud publicca external-account-keys create

Este comando devuelve un secreto de EAB que es 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 después de obtenerlo. El secreto de EAB se invalida si no lo usas en un plazo de 7 días. La cuenta de ACME registrada con un secreto de EAB no tiene vencimiento.

Registra una cuenta de ACME

En esta sección, se explica cómo registrar una cuenta de ACME en Public CA proporcionando el secreto de EAB que acabas de obtener.

Usa un cliente de ACME normal para registrar una cuenta de ACME y proporciona el ID de clave de EAB y HMAC durante el registro.

Para registrar una cuenta de ACME con Public CA y vincularla al proyecto de Google Cloud que usaste 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"

Reemplaza lo siguiente:

  • EMAIL_ADDRESS: tu dirección de correo electrónico
  • SERVER: la URL del directorio de ACME para el entorno de producción o de etapa de pruebas
  • EAB_KID: Es el ID de la clave de EAB.
  • EAB_HMAC_KEY: Es la clave HMAC de EAB.

En la siguiente tabla, se proporciona la descripción y la URL del directorio de ACME para los entornos de producción y de etapa de pruebas:

Entorno Descripción URL del directorio de ACME
Producción El entorno de producción te permite obtener certificados de confianza pública. https://dv.acme-v02.api.pki.goog/directory
Etapa de pruebas El entorno de etapa de pruebas devuelve certificados que no son de confianza pública. El entorno de etapa de pruebas realiza las mismas verificaciones de validación que el entorno de producción. Puedes usar el entorno de etapa de pruebas para la integración o cualquier otro tipo de prueba. https://dv.acme-v02.test-api.pki.goog/directory

Solo puedes registrar una cuenta de ACME con un secreto de EAB. Después de registrar una cuenta de ACME con un secreto de EAB, este se vuelve no válido y no puedes volver a usarlo. Si deseas registrar varias cuentas de ACME, debes solicitar un secreto de EAB único para cada una de las cuentas.

Solicitar certificados

Después de que la CA pública valide tu control del destino del certificado y confirme que tu cliente de ACME funciona como se espera para realizar operaciones de administración de certificados, puedes usar los flujos de trabajo normales de ACME para solicitar, renovar y revocar certificados. Puedes realizar estas operaciones con tu cliente de ACME. Para solicitar y renovar un certificado, debes completar un desafío de ACME, como el desafío de DNS manual.

Si usas registros DNS de autorización de autoridad certificadora (CAA) para controlar qué AC pueden emitir certificados para tu dominio, debes especificar pki.goog como emisor autorizado, por ejemplo, 0 issue "pki.goog". La Public CA también admite extensiones de registros CAA para el URI de la cuenta y la vinculación del método ACME, como se define en RFC 8657, lo que te permite restringir la emisión de certificados a una cuenta de ACME específica con el parámetro accounturi y a métodos de validación específicos con el parámetro validationmethods.

Para usar el desafío de DNS manual y solicitar un certificado, ejecuta el siguiente comando:

certbot certonly \
    --manual \
    --preferred-challenges "dns-01" \
    --server "SERVER" \
    --domains "DOMAINS"

Reemplaza lo siguiente:

  • SERVER: la URL del directorio de ACME para el entorno de producción o de etapa de pruebas
  • DOMAINS: Es una lista separada por comas de los dominios para los que solicitas certificados.

Realiza una limpieza

Si ya no necesitas certificados para tus dominios, borra el proyecto que creaste.

Etapa de pruebas

Puedes usar el entorno de etapa de pruebas de Public CA para solicitar certificados con fines de prueba. Los certificados emitidos por el entorno de etapa de pruebas se encadenan a una CA raíz de prueba. Los navegadores o cualquier otro cliente que no se haya configurado para confiar en el certificado raíz de etapa de pruebas no confiarán en los certificados del entorno de etapa de pruebas. Para obtener un secreto de EAB que sea válido en el entorno de etapa de pruebas, anula el extremo de API para usar el extremo del entorno de etapa de pruebas:

gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
Luego, ejecuta el comando de creación de claves de cuenta para crear una clave de etapa de pruebas:
gcloud publicca external-account-keys create
Para volver al extremo del entorno de producción, ejecuta el siguiente comando:
gcloud config unset api_endpoint_overrides/publicca

Borra un proyecto de Google Cloud :

gcloud projects delete PROJECT_ID

¿Qué sigue?