Emite un certificado con Google Cloud CLI

En esta página, se explica cómo puedes generar o emitir certificados a través de Certificate Authority Service con Google Cloud CLI.

El servicio de CA te permite implementar y administrar AC privadas sin administrar la infraestructura.

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

    • 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.
    • Crear 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 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 Google Cloud proyecto que estás creando.

    • Selecciona el Google Cloud proyecto que creaste:

      gcloud config set project PROJECT_ID

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

  • Habilita la API de Certificate Authority Service:

    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 obtener este permiso 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 privateca.googleapis.com

  • Verifica que la facturación esté habilitada para tu Google Cloud proyecto.

  • Configura una ubicación predeterminada para usarla en los comandos de gcloud de esta guía de inicio rápido.

    gcloud config set privateca/location LOCATION
    

    Los recursos del servicio de CA, como los grupos de CA y las CA, residen en una sola Google Cloud ubicación que no puedes cambiar después de crear estos recursos.

Crear grupo de CA

Un grupo de autoridad certificadora (AC) es un conjunto de varias AC. Un grupo de CA ofrece la capacidad de rotar cadenas de confianza sin interrupciones ni tiempos de inactividad en las cargas de trabajo.

Para crear un grupo de CA en el nivel Enterprise, ejecuta el siguiente comando:

gcloud privateca pools create POOL_ID --location LOCATION --tier "enterprise"

Reemplaza lo siguiente:

  • POOL_ID: Es el nombre del grupo de CA.
  • LOCATION: Es la ubicación del grupo de CA. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.

Los nombres de los recursos pueden contener letras, números, guiones (-) y guiones bajos (_), y pueden tener hasta 63 caracteres.

Crea una AC raíz:

Un grupo de CA está vacío cuando se crea. Para solicitar certificados de un grupo de CA, debes agregar una CA en él.

Para crear una CA raíz y agregarla al grupo de CA que creaste, ejecuta el siguiente comando:

gcloud privateca roots create CA_ID --pool POOL_ID --location LOCATION --subject "CN=Example Prod Root CA,O=Google"

Reemplaza lo siguiente:

  • CA_ID: el nombre de la CA raíz
  • POOL_ID: Es el nombre del grupo de CA.
  • LOCATION: Es la ubicación del grupo de CA. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.

El servicio de CA muestra el siguiente resultado cuando crea la CA raíz:

Created Certificate Authority [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities/CA_ID]

Para habilitar la CA raíz, ingresa y cuando gcloud CLI te lo solicite.

Opcional: Crea un grupo de CA subordinado

Para crear un grupo de CA subordinado, ejecuta el siguiente comando:

    gcloud privateca pools create SUBORDINATE_POOL_ID
        --location LOCATION
        --tier TIER

Reemplaza lo siguiente:

  • SUBORDINATE_POOL_ID: el ID del grupo de CA subordinado
  • LOCATION: Es la ubicación del grupo de CA subordinado. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.
  • TIER: el nivel de CA subordinado, ya sea devops o enterprise

Opcional: Crea una CA subordinada firmada por una CA raíz almacenada en Google Cloud

Para crear una CA subordinada en el grupo de CA subordinado que creaste en el paso anterior, ejecuta el siguiente comando:

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
        --location=LOCATION \
        --pool=SUBORDINATE_POOL_ID \
        --issuer-pool=POOL_ID \
        --issuer-location=ISSUER_LOCATION \
        --from-ca=EXISTING_CA_ID \
        --kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION

Reemplaza lo siguiente:

  • SUBORDINATE_CA_ID: el ID de la CA subordinada
  • LOCATION: Es la ubicación de la CA subordinada. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.
  • SUBORDINATE_POOL_ID: el ID del grupo de CA subordinado que creaste en la sección anterior
  • POOL_ID: el ID del grupo de CA superior
  • ISSUER_LOCATION: la ubicación del certificado
  • EXISTING_CA_ID: el ID de la CA de origen
  • PROJECT_ID: El ID del proyecto
  • LOCATION_ID: la ubicación del llavero de claves
  • KEY_RING: el nombre del llavero de claves en el que se encuentra la clave
  • KEY: el nombre de la clave
  • KEY_VERSION: la versión de la clave

Se muestra la siguiente instrucción cuando se crea la CA subordinada.

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID].

Para habilitar la CA subordinada, ingresa y cuando gcloud CLI te lo solicite.

Crear un certificado

Para usar la CA recién creada para crear un certificado, haz lo siguiente:

  1. Instala la biblioteca de criptografía de Pyca con el comando pip.

      pip install --user "cryptography>=2.2.0"
    

    El servicio de CA usa la biblioteca de criptografía de Pyca para generar y almacenar un nuevo par de claves asimétricas en tu máquina local. Esta clave nunca se envía al servicio de CA.

  2. Para permitir que el SDK de Google Cloud use la biblioteca de criptografía de Pyca, debes habilitar los paquetes del sitio.

    macOS o Linux

    export CLOUDSDK_PYTHON_SITEPACKAGES=1
    

    Windows

    set CLOUDSDK_PYTHON_SITEPACKAGES=1
    
  3. Crea un certificado.

      gcloud privateca certificates create \
          --issuer-pool POOL_ID \
          --issuer-location ISSUER_LOCATION \
          --subject "CN=Example Prod,O=Google" \
          --generate-key \
          --key-output-file=./key \
          --cert-output-file=./cert.pem
    

    Reemplaza lo siguiente:

    • POOL_ID: el ID de recurso del grupo de CA que creaste
    • ISSUER_LOCATION: la ubicación de la autoridad certificadora que emitió el certificado digital

    El servicio de CA muestra la siguiente respuesta:

    Created Certificate [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificates/CERTIFICATE_ID]
    

Limpia

Limpia el grupo de CA, la CA y el proyecto que creaste para esta guía de inicio rápido.

  1. Revoca el certificado.

      Para revocar un certificado, ejecuta el siguiente comando:

       gcloud privateca certificates revoke --certificate CERT_NAME --issuer-pool POOL_ID --location 
      LOCATION
        

      Reemplaza lo siguiente:

      • CERT_NAME: el nombre del certificado que deseas revocar
      • POOL_ID: el nombre del grupo de CA que emitió el certificado
      • LOCATION: la ubicación del grupo de CA
  2. Borra la CA.

    Solo puedes borrar una CA después de revocar todos los certificados que emitió.

    1. Inhabilita la CA.

      gcloud privateca roots disable CA_ID --pool=POOL_ID --location=LOCATION
      

      Reemplaza lo siguiente:

      • CA_ID: el ID de recurso de la CA
      • POOL_ID: el ID de recurso del grupo de CA
      • LOCATION: Es la ubicación del grupo de CA. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.
    2. Borra la CA.

      gcloud privateca roots delete CA_ID --pool=POOL_ID --location=LOCATION
      

    El estado de la CA cambia a Deleted. El servicio de CA borra la CA de forma permanente 30 días después de que inicias la eliminación.

  3. Borra el grupo de CA.

    Solo puedes borrar un grupo de CA después de que la CA que contiene se borre de forma permanente.

    gcloud privateca pools delete POOL_ID --location=LOCATION
    
  4. Borra el proyecto.

    Borra un Google Cloud proyecto:

    gcloud projects delete PROJECT_ID

¿Qué sigue?