Crear grupo de CA

En esta página, se describe cómo crear grupos de autoridades certificadoras (AC).

Un grupo de AC es un conjunto de varias AC con una política común de emisión de certificados y de administración de Identity and Access Management (IAM). Un grupo de CA facilita la administración de la rotación de CA y te permite alcanzar un mayor total de consultas efectivas por segundo (QPS).

Debes crear un grupo de CA antes de poder usar Certificate Authority Service para crear una CA. Para obtener más información, consulta Descripción general de los grupos de AC.

Antes de comenzar

Asegúrate de tener el rol de IAM de administrador de operaciones del servicio de CA (roles/privateca.caManager). Para obtener información sobre cómo otorgar un rol de IAM a un principal, consulta Otorga un solo rol.

Decide la configuración del grupo de CA

En esta sección, se describen los parámetros de configuración de un grupo de CA y se proporcionan recomendaciones para decidir los parámetros de configuración.

Configuración permanente del grupo de AC

Los siguientes parámetros de configuración del grupo de CA no se pueden cambiar después de crear el grupo de CA.

Ubicación
Especifica la ubicación del grupo de CA. Un grupo de CA se almacena en una sola Google Cloud ubicación. Te recomendamos que crees tu grupo de CA en la misma ubicación o cerca de la ubicación en la que planeas usarlo.
Para obtener la lista completa de las ubicaciones admitidas, consulta Ubicaciones.
Nivel
Elige si deseas crear el grupo de CA con el nivel de DevOps o Enterprise. Esta elección afecta si CA Service conserva los certificados creados, si los certificados creados se pueden revocar más adelante y la tasa máxima a la que puedes crear certificados a partir de las AC en el grupo de AC. Para obtener más información, consulta Selecciona los niveles de operación.

Configuración opcional del grupo de CA

Política de emisión de certificados

Un grupo de CA puede tener una política de emisión de certificados. Esta política de emisión impone restricciones a los certificados que pueden emitir las CA del grupo de CA. Puedes actualizar la política de emisión de un grupo de AC después de crear el grupo de AC. Para obtener más información, consulta Descripción general de las plantillas y las políticas de emisión.

Para obtener más información sobre cómo configurar una política de emisión de certificados, consulta Agrega una política de emisión de certificados a un grupo de CA.

Opciones de publicación

Puedes configurar un grupo de CA para publicar los certificados de CA de cada una de sus CA. Cuando se emite un certificado, la URL a este certificado de CA se incluye en el certificado como una extensión de acceso a la información de la autoridad (AIA).

Se puede permitir que las CA de los grupos de CA del nivel Enterprise publiquen listas de revocación de certificados (CRL) en el bucket de Cloud Storage asociado. Cuando se emite un certificado, se incluye una URL a esta CRL en el certificado como la extensión del punto de distribución de CRL (CDP). No puedes encontrar la CRL sin la extensión de CDP en el certificado. Para obtener más información, consulta Cómo revocar certificados.

También puedes seleccionar el formato de codificación de los certificados de CA y las CRL publicados. Los formatos de codificación admitidos son Privacy Enhanced Mail (PEM) y Distinguished Encoding Rules (DER). Si no se especifica un formato de codificación, se usará PEM.

Si creas el grupo de AC con Google Cloud CLI o la consola de Google Cloud , el servicio de AC habilita estas opciones de publicación de forma predeterminada. Para obtener más información, consulta Cómo inhabilitar la publicación de certificados de CA y CRL para las AC en un grupo de AC.

Crear grupo de CA

Para crear un grupo de CA, sigue estas instrucciones:

Console

Elige un nombre para el grupo de CA

  1. Ve a la página Certificate Authority Service en la Google Cloud consola.

    Ir a Certificate Authority Service

  2. Haz clic en Administrador de grupos de CA.

  3. Haz clic en Crear grupo.

  4. Agrega un nombre para el grupo de CA que sea único para la región.

  5. Selecciona una región en el menú desplegable del campo Región. Para obtener más información, consulta Cómo elegir la mejor ubicación.

  6. Selecciona el nivel Enterprise o DevOps. Para obtener más información, consulta Selecciona los niveles de operación.

  7. Haz clic en Siguiente.

Configura los algoritmos y tamaños de claves permitidos

El servicio de CA te permite elegir los algoritmos de firma para las claves de Cloud KMS que respaldan las CA en el grupo de CA. De forma predeterminada, se permiten todos los algoritmos de claves.

Para restringir las claves permitidas en los certificados emitidos por el grupo de CA, haz lo siguiente. Este es un procedimiento opcional.

  1. Haz clic en el botón de activación.
  2. Haz clic en Agregar un elemento.
  3. En la lista Tipo, selecciona el tipo de clave.

    Si quieres usar claves RSA, haz lo siguiente:

    1. Opcional: Agrega el tamaño mínimo del módulo en bits.
    2. Opcional: Agrega el tamaño máximo del módulo en bits.
    3. Haz clic en Listo.

    Si quieres usar claves de curva elíptica, haz lo siguiente:

    1. Opcional: En la lista Tipo de curva elíptica, selecciona el tipo de curva elíptica.
    2. Haz clic en Listo.
  4. Para agregar otra clave permitida, haz clic en Agregar un elemento y repite el paso 2.

  5. Haz clic en Siguiente.

Configura métodos de solicitud de certificados

Para establecer limitaciones en los métodos que los solicitantes de certificados pueden usar para solicitar certificados del grupo de CA, haz lo siguiente:

  1. Opcional: Para restringir las solicitudes de certificados basadas en CSR, haz clic en el botón de activación.
  2. Opcional: Para restringir las solicitudes de certificados basadas en la configuración, haz clic en el botón de activación.

Configura las opciones de publicación

Para configurar las opciones de publicación, haz lo siguiente:

  1. Opcional: Para inhabilitar la publicación de certificados de CA en el bucket de Cloud Storage para las CA del grupo de CA, haz clic en el botón de activación.
  2. Opcional: Para no permitir la publicación de CRL en el bucket de Cloud Storage para las CA del grupo de CA, haz clic en el botón de activación.
  3. Haz clic en el menú para seleccionar el formato de codificación de los certificados de CA y las CRL publicados.

    Configura las opciones de publicación para los certificados de CA y las CRL de las CA en el grupo de CA.

  4. Haz clic en Siguiente.

Define el uso base de la clave

Este parámetro de configuración hace referencia al campo Key Usage dentro de un certificado digital. Especifica cómo se puede usar la clave privada del certificado, por ejemplo, para el cifrado de claves, el cifrado de datos, la firma de certificados y la firma de CRL. Para obtener más información, consulta Uso de claves.

  1. Para seleccionar los usos de clave básicos, haz clic en el botón de activación Especificar los usos base de claves para los certificados emitidos desde este grupo de CA y, luego, selecciona una de las opciones que se muestran.
  2. Haz clic en Siguiente.
Define el uso extendido de la clave

Este parámetro de configuración hace referencia al campo Extended Key Usage (EKU) en un certificado digital. Proporciona restricciones más específicas y detalladas sobre cómo se puede usar la clave, por ejemplo, para la autenticación del servidor, la autenticación del cliente, la firma de código y la protección del correo electrónico. Para obtener más información, consulta Uso extendido de claves.

Los usos extendidos de claves se definen con identificadores de objeto (OID). Si no configuras los usos extendidos de la clave, se permitirán todas las situaciones de uso de la clave.

  1. Para seleccionar los usos de clave extendidos, haz clic en el botón de activación Escribe los usos de clave extendidos para los certificados emitidos desde este grupo de CA y, luego, selecciona una de las opciones que se muestran.
  2. Haz clic en Siguiente.
Cómo definir identificadores de políticas

La extensión de políticas de certificado en el certificado expresa las políticas que sigue el grupo de CA emisor. Esta extensión puede incluir información sobre cómo se validan las identidades antes de la emisión de certificados, cómo se revocan los certificados y cómo se garantiza la integridad del grupo de CA. Esta extensión te ayuda a verificar los certificados que emite el grupo de entidades certificadoras y a ver cómo se usan.

Para obtener más información, consulta Políticas de certificados.

Para especificar la política que define el uso del certificado, haz lo siguiente:

  1. Agrega el identificador de la política en el campo Identificadores de políticas.
  2. Haz clic en Siguiente.
Agrega servidores OCSP de acceso a la información de la autoridad (AIA)

La extensión AIA en un certificado proporciona la siguiente información:

  • Dirección de los servidores OCSP desde los que puedes verificar el estado de revocación del certificado.
  • Es el método de acceso para la entidad emisora del certificado.

Para obtener más información, consulta Acceso a la información de la autoridad.

Para agregar los servidores de OCSP que aparecen en el campo de extensión de AIA en los certificados, haz lo siguiente:

  1. Haz clic en Agregar elemento.
  2. En el campo URL del servidor, agrega la URL del servidor OCSP.
  3. Haz clic en Listo.
  4. Haz clic en Siguiente.
Opciones de CA

El campo Opciones de CA dentro de una plantilla de certificado define cómo se puede usar el certificado resultante en una jerarquía de autoridad certificadora (CA). Las opciones de CA determinan si un certificado se puede usar para firmar otros certificados y, si es así, las restricciones sobre los certificados que emite.

Selecciona alguna de las siguientes opciones:

  1. Incluye los archivos de configuración para describir las extensiones de CA X.509: Especifica la configuración dentro de una plantilla de certificado que controla las extensiones X.509.

  2. Restringe los certificados emitidos a fin de que se usen solo para las CA: Esta opción solo aparece si seleccionas la casilla de verificación mencionada en el paso anterior. Este valor booleano indica si el certificado es un certificado de CA. Si se configura como true, el certificado se puede usar para firmar otros certificados. Si es false, el certificado es de entidad final y no puede firmar otros certificados. Si haces clic en este botón de activación, se te pedirá que definas restricciones de nombres para la extensión en los certificados de CA.

  3. Incluye la configuración para describir las extensiones X.509 de restricción de la longitud de la ruta: Especifica la configuración que controla la longitud de una cadena de certificados, que se deriva de un certificado en particular. Si la longitud máxima de la ruta de interacciones del emisor se establece en 0, la CA solo puede emitir certificados de entidad final. Si se establece en 1, la cadena debajo de este certificado de CA solo puede incluir una CA subordinada. Si no se declara un valor, la cantidad de CA subordinadas en la cadena debajo de esta CA no está limitada.

  4. Haz clic en Siguiente.
Configura extensiones adicionales

Para configurar extensiones personalizadas adicionales que se incluirán en los certificados emitidos por el grupo de CA, haz lo siguiente:

  1. Haz clic en Agregar elemento.
  2. En el campo Identificador de objeto, agrega un identificador de objeto válido con formato de dígitos separados por puntos.
  3. En el campo Value, agrega el valor codificado en base64 para el identificador.
  4. Si la extensión es fundamental, selecciona La extensión es fundamental.

Para guardar todos los parámetros de configuración del valor del modelo de referencia, haz clic en Listo.

Para crear el grupo de CA, haz clic en Listo.

gcloud

Ejecuta el siguiente comando:

gcloud privateca pools create POOL_NAME --location=LOCATION

Reemplaza lo siguiente:

  • POOL_NAME: Es el nombre del grupo de AC.
  • LOCATION: Es la ubicación en la que deseas crear el grupo de AC. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.

Si no especificas qué nivel necesitas para tu grupo de CA, se seleccionará el nivel Enterprise de forma predeterminada. Si deseas especificar el nivel de tu grupo de CA, ejecuta el siguiente comando de gcloud:

gcloud privateca pools create POOL_NAME --location=LOCATION --tier=TIER_NAME

Reemplaza lo siguiente:

  • POOL_NAME: Es el nombre de tu grupo de CA.
  • LOCATION: Es la ubicación en la que deseas crear el grupo de AC. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.
  • TIER_NAME: devops o enterprise Para obtener más información, consulta Selecciona los niveles de operación.

Si no especificas el formato de codificación de publicación para tu grupo de AC, se seleccionará de forma predeterminada el formato de codificación de publicación PEM. Si deseas especificar el formato de codificación de publicación para tu grupo de CA, ejecuta el siguiente comando gcloud:

gcloud privateca pools create POOL_NAME --location=LOCATION --publishing-encoding-format=PUBLISHING_ENCODING_FORMAT

Reemplaza lo siguiente:

  • POOL_NAME: Es el nombre de tu grupo de CA.
  • LOCATION: Es la ubicación en la que deseas crear el grupo de CA. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.
  • PUBLISHING_ENCODING_FORMAT: PEM o DER

Para obtener más información sobre el comando gcloud privateca pools create, consulta gcloud privateca pools create.

Para obtener información sobre cómo restringir el tipo de certificados que puede emitir un grupo de AC, consulta Agrega una política de emisión de certificados a un grupo de AC.

Terraform

resource "google_privateca_ca_pool" "default" {
  name     = "ca-pool"
  location = "us-central1"
  tier     = "ENTERPRISE"
  publishing_options {
    publish_ca_cert = true
    publish_crl     = true
  }
  labels = {
    foo = "bar"
  }
}

Go

Para autenticarte en CA Service, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

import (
	"context"
	"fmt"
	"io"

	privateca "cloud.google.com/go/security/privateca/apiv1"
	"cloud.google.com/go/security/privateca/apiv1/privatecapb"
)

// Create a Certificate Authority pool. All certificates created under this CA pool will
// follow the same issuance policy, IAM policies, etc.
func createCaPool(w io.Writer, projectId string, location string, caPoolId string) error {
	// projectId := "your_project_id"
	// location := "us-central1"	// For a list of locations, see: https://cloud.google.com/certificate-authority-service/docs/locations.
	// caPoolId := "ca-pool-id"		// A unique id/name for the ca pool.

	ctx := context.Background()
	caClient, err := privateca.NewCertificateAuthorityClient(ctx)
	if err != nil {
		return fmt.Errorf("NewCertificateAuthorityClient creation failed: %w", err)
	}
	defer caClient.Close()

	caPool := &privatecapb.CaPool{
		// Set the tier (see: https://cloud.google.com/certificate-authority-service/docs/tiers).
		Tier: privatecapb.CaPool_ENTERPRISE,
	}

	locationPath := fmt.Sprintf("projects/%s/locations/%s", projectId, location)

	// See https://pkg.go.dev/cloud.google.com/go/security/privateca/apiv1/privatecapb#CreateCaPoolRequest.
	req := &privatecapb.CreateCaPoolRequest{
		Parent:   locationPath,
		CaPoolId: caPoolId,
		CaPool:   caPool,
	}

	op, err := caClient.CreateCaPool(ctx, req)
	if err != nil {
		return fmt.Errorf("CreateCaPool failed: %w", err)
	}

	if _, err = op.Wait(ctx); err != nil {
		return fmt.Errorf("CreateCaPool failed during wait: %w", err)
	}

	fmt.Fprintf(w, "CA Pool created")

	return nil
}

Java

Para autenticarte en CA Service, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


import com.google.api.core.ApiFuture;
import com.google.cloud.security.privateca.v1.CaPool;
import com.google.cloud.security.privateca.v1.CaPool.IssuancePolicy;
import com.google.cloud.security.privateca.v1.CaPool.Tier;
import com.google.cloud.security.privateca.v1.CertificateAuthorityServiceClient;
import com.google.cloud.security.privateca.v1.CertificateIdentityConstraints;
import com.google.cloud.security.privateca.v1.CreateCaPoolRequest;
import com.google.cloud.security.privateca.v1.LocationName;
import com.google.longrunning.Operation;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateCaPool {

  public static void main(String[] args)
      throws InterruptedException, ExecutionException, IOException {
    // TODO(developer): Replace these variables before running the sample.
    // location: For a list of locations, see:
    // https://cloud.google.com/certificate-authority-service/docs/locations
    // poolId: Set a unique poolId for the CA pool.
    String project = "your-project-id";
    String location = "ca-location";
    String poolId = "ca-pool-id";
    createCaPool(project, location, poolId);
  }

  // Create a Certificate Authority Pool. All certificates created under this CA pool will
  // follow the same issuance policy, IAM policies,etc.,
  public static void createCaPool(String project, String location, String poolId)
      throws InterruptedException, ExecutionException, IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `certificateAuthorityServiceClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (CertificateAuthorityServiceClient certificateAuthorityServiceClient =
        CertificateAuthorityServiceClient.create()) {

      IssuancePolicy issuancePolicy = IssuancePolicy.newBuilder()
          .setIdentityConstraints(CertificateIdentityConstraints.newBuilder()
              .setAllowSubjectPassthrough(true)
              .setAllowSubjectAltNamesPassthrough(true)
              .build())
          .build();

      /* Create the pool request
        Set Parent which denotes the project id and location.
        Set the Tier (see: https://cloud.google.com/certificate-authority-service/docs/tiers).
      */
      CreateCaPoolRequest caPoolRequest =
          CreateCaPoolRequest.newBuilder()
              .setParent(LocationName.of(project, location).toString())
              .setCaPoolId(poolId)
              .setCaPool(
                  CaPool.newBuilder()
                      .setIssuancePolicy(issuancePolicy)
                      .setTier(Tier.ENTERPRISE)
                      .build())
              .build();

      // Create the CA pool.
      ApiFuture<Operation> futureCall =
          certificateAuthorityServiceClient.createCaPoolCallable().futureCall(caPoolRequest);
      Operation response = futureCall.get();

      if (response.hasError()) {
        System.out.println("Error while creating CA pool !" + response.getError());
        return;
      }

      System.out.println("CA pool created successfully: " + poolId);
    }
  }
}

Python

Para autenticarte en CA Service, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

import google.cloud.security.privateca_v1 as privateca_v1


def create_ca_pool(project_id: str, location: str, ca_pool_name: str) -> None:
    """
    Create a Certificate Authority pool. All certificates created under this CA pool will
    follow the same issuance policy, IAM policies,etc.,

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        location: location you want to use. For a list of locations, see: https://cloud.google.com/certificate-authority-service/docs/locations.
        ca_pool_name: a unique name for the ca pool.
    """

    caServiceClient = privateca_v1.CertificateAuthorityServiceClient()

    ca_pool = privateca_v1.CaPool(
        # Set the tier (see: https://cloud.google.com/certificate-authority-service/docs/tiers).
        tier=privateca_v1.CaPool.Tier.ENTERPRISE,
    )
    location_path = caServiceClient.common_location_path(project_id, location)

    # Create the pool request.
    request = privateca_v1.CreateCaPoolRequest(
        parent=location_path,
        ca_pool_id=ca_pool_name,
        ca_pool=ca_pool,
    )

    # Create the CA pool.
    operation = caServiceClient.create_ca_pool(request=request)

    print("Operation result:", operation.result())

API de REST

  1. Crea un grupo de CA.

    Método HTTP y URL:

    POST https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/caPools\?ca_pool_id=POOL_ID

    Cuerpo JSON de la solicitud:

    {
      "tier": "ENTERPRISE"
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
        "name": "projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID",
        "metadata": {...},
        "done": false
    }
    

  2. Sondea la operación hasta que se complete.

    La operación se completa cuando la propiedad done de la operación de larga duración se establece en true.

    Método HTTP y URL:

    GET https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    {
        "name": "projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID",
        "metadata": {...},
        "done": true,
        "response": {
          "@type": "type.googleapis.com/google.cloud.security.privateca.v1.CaPool",
          "name": "...",
          "tier": "ENTERPRISE"
        }
    }
    

Agrega o actualiza etiquetas en un grupo de CA

Una etiqueta es un par clave-valor que te ayuda a organizar tus recursos de CA Service. Puedes filtrar tus recursos según sus etiquetas.

Para agregar o actualizar etiquetas en un grupo de CA, haz lo siguiente:

Console

Para agregar una etiqueta, haz lo siguiente:

  1. Ve a la página de Certificate Authority Service.

    Ir a Certificate Authority Service

  2. En la pestaña Administrador de grupos de CA, selecciona el grupo de CA.

  3. Haz clic en Etiquetas.

  4. Haz clic en Agregar etiqueta.

  5. Agrega un par clave-valor.

  6. Haz clic en Guardar.

    Agrega una etiqueta a un grupo de CA existente.

Para editar una etiqueta existente, haz lo siguiente:

  1. Ve a la página de Certificate Authority Service.

    Ir a Certificate Authority Service

  2. En la pestaña Administrador de grupos de CA, selecciona el grupo de CA.

  3. Haz clic en Etiquetas.

  4. Edita el valor de la etiqueta.

  5. Haz clic en Guardar.

gcloud

Ejecuta el siguiente comando:

gcloud privateca pools update POOL_ID --location=LOCATION --update-labels foo=bar

Reemplaza lo siguiente:

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

¿Qué sigue?