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 mediante Google Cloud CLI. Para obtener información sobre las CAs raíz e intermedias que usa Public Certificate Authority, consulta Google Trust Services. No se cobra por solicitar certificados de Public CA.

Antes de comenzar

  • Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:

    gcloud init

    Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  • Crea o selecciona un Google Cloud proyecto.

    Roles necesarios para seleccionar o crear un proyecto

    • Selecciona 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 resourcemanager.projects.create permiso. Obtén información para otorgar roles.
    • Crea un proyecto de: Google Cloud

      gcloud projects create PROJECT_ID

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

    • Selecciona el Google Cloud proyecto de que creaste:

      gcloud config set project PROJECT_ID

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

  • Asegúrate de tener el rol de IAM de creador de claves de cuentas externas de la Public CA (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 Google Cloud proyecto de .
    • 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 Administración del acceso a proyectos, carpetas y organizaciones.

  • Habilita la API de la CA pública:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el serviceusage.services.enable permiso. Obtén 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 cliente de ACME. Puedes usar cualquier otro cliente de ACME si el cliente 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 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 Public CA.

Solicita un ID de clave EAB y HMAC

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

Para solicitar un ID de clave EAB y 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 Public CA. En el cuerpo de la respuesta, el campo keyId contiene el ID de clave EAB y el campo b64MacKey contiene el HMAC 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 fecha de vencimiento.

Registra una cuenta de ACME

En esta sección, se explica cómo registrar una cuenta de ACME con la 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 EAB y HMAC durante el registro.

Para registrar una cuenta de ACME con la Public CA y vincular la cuenta de ACME al Google Cloud proyecto 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: el ID de clave EAB
  • EAB_HMAC_KEY: la clave HMAC EAB

En la siguiente tabla, se proporciona la descripción y la URL del directorio de ACME para el entorno 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, el secreto de EAB deja de ser 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.

Solicita certificados

Después de que la Public CA valide tu control del destino del certificado y reconozca que tu cliente de ACME funciona como se espera para realizar operaciones de administración de certificados, puedes usar los flujos de trabajo de ACME normales 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 manual de DNS.

Para usar el desafío manual de DNS para 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: una lista de dominios separados por comas para los que solicitas certificados

Limpia

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 la Public CA para solicitar certificados con fines de prueba. Los certificados emitidos por la cadena del entorno de etapa de pruebas hasta 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 endpoint 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 Google Cloud proyecto de:

gcloud projects delete PROJECT_ID

¿Qué sigue?