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 una política de Identity and Access Management (IAM). Un grupo de AC facilita la administración de la rotación de las AC y te permite alcanzar un total mayor de consultas efectivas por segundo (QPS).

Debes crear un grupo de AC antes de poder usar Certificate Authority Service para crear una AC. 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 de CA Service (roles/privateca.caManager). Para obtener más información sobre cómo otorgar una IAM a una principal, consulta Otorga un solo rol.

Decide la configuración del grupo de AC

En esta sección, se describe la configuración de un grupo de AC y se proporcionan recomendaciones para decidir la configuración.

Configuración del grupo de AC permanente

La siguiente configuración del grupo de AC no se puede cambiar después de crearlo.

Ubicación

Especifica la ubicación del grupo de AC. Un grupo de AC se almacena en una sola ubicación de Google Cloud. Te recomendamos que crees tu grupo de AC en la misma ubicación o cerca de la ubicación en la que deseas usarlo.

Para obtener la lista completa de ubicaciones admitidas, consulta Ubicaciones.

Nivel

Elige si deseas crear el grupo de AC con el nivel de DevOps o el de Enterprise. Esta opción afecta si el Servicio de CA conserva los certificados creados, si los certificados creados se pueden revocar más adelante y la frecuencia máxima con 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 AC puede tener una política de emisión de certificados. Esta política de emisión establece restricciones sobre los certificados que pueden emitir las AC del grupo de AC. Puedes actualizar la política de emisión de un grupo de AC después de crearlo. Para obtener más información, consulta Descripción general de las plantillas y políticas de emisión.

Si quieres obtener más información para configurar una política de emisión de certificados, consulta Agrega una política de emisión de certificados a un grupo de AC.

Opciones de publicación

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

Se puede permitir que las AC de los grupos de AC de nivel empresarial publiquen listas de revocación de certificados (CRL) en el bucket de Cloud Storage asociado. Cuando se emite un certificado, el certificado incluye una URL a esta CRL como la extensión del punto de distribución (CDP) de la CRL. No podrás 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 las CRL y los certificados de la AC publicados. Los formatos de codificación admitidos son el correo con privacidad mejorada (PEM) y las reglas de codificación distinguidas (DER). Si no se especifica un formato de codificación, se usará la PEM.

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

Crear grupo de CA

Para crear un grupo de AC, usa las siguientes instrucciones:

Console

Elige un nombre para el grupo de AC

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

    Ir a Certificate Authority Service

  2. Haz clic en Administrador de grupos de CA.

  3. Haz clic en Crear grupo.

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

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

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

  7. Haz clic en Siguiente.

Configura algoritmos y tamaños clave permitidos

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

Para restringir las claves permitidas en los certificados que emite el grupo de AC, haz lo siguiente: Este procedimiento es 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 tecla permitida, haz clic en Agregar un elemento y repite el paso 2.

  5. Haz clic en Siguiente.

Configura métodos de solicitud de certificado

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

  1. Opcional: Para restringir las solicitudes de certificados basados 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: Si quieres inhabilitar la publicación de certificados de la AC en el bucket de Cloud Storage para las AC del grupo de AC, haz clic en el botón de activación.
  2. Opcional: Si quieres inhabilitar la publicación de CRL en el bucket de Cloud Storage para las AC del grupo de AC, haz clic en el botón de activación.
  3. Haz clic en el menú para seleccionar el formato de codificación para los certificados de la AC y las CRL publicados.

    Configura las opciones de publicación de los certificados de la AC y las CRL para las AC del grupo de AC.

  4. Haz clic en Siguiente.

Configura restricciones de identidad

Para configurar restricciones en el asunto y los SAN en los certificados que emite el grupo de CA, haz lo siguiente:

  1. Opcional: Para inhabilitar la entidad de las solicitudes de certificado, haz clic en el botón de activación.
  2. Opcional: Para no permitir que se pasen los nombres alternativos de entidad de las solicitudes de certificado, haz clic en el botón de activación.
  3. Opcional: Agrega una expresión de Common Expression Language (CEL) para aplicar restricciones a los asuntos del certificado. Para obtener más información, consulta Usa CEL.
  4. Haz clic en Siguiente.
Configura restricciones de extensiones

Para impedir que todas las extensiones de las solicitudes de certificados se incluyan en los certificados emitidos, haz clic en el botón de activación.

Después de hacer clic en el botón de activación, verás el campo Extensiones de certificados conocidas, que puedes usar para seleccionar las extensiones de certificado. Para seleccionar las extensiones de certificado, haz lo siguiente:

  1. Opcional: Haz clic en el campo Extensiones de certificado conocidas y borra las extensiones no obligatorias del menú.
  2. Opcional: En el campo Extensiones personalizadas, agrega los identificadores de objetos para las extensiones que quieras que se incluyan en los certificados que emite el grupo de AC.
Configura los valores del modelo de referencia

Para configurar los valores del modelo de referencia en los certificados emitidos desde el grupo de AC, haz lo siguiente:

  1. Haz clic en el botón de activación.
  2. Haz clic en Configurar valores de referencia.
Definir el uso de la clave base

Puedes usar esta configuración para configurar las formas en las que se puede usar la clave contenida en el certificado. Entre las opciones de uso de la clave, se incluyen el cifrado de claves, el cifrado de datos, la firma de certificados y la firma de CRL, entre otras.

Para obtener más información, consulta Uso de la clave.

Para definir los usos básicos de claves, haz lo siguiente:

  1. Opcional: En la ventana que aparece, haz clic en el botón de activación si quieres especificar los usos base de claves para los certificados.
  2. Selecciona las casillas de verificación correspondientes a las formas en las que quieres que se use la clave.
  3. Selecciona las formas de alto nivel en las que quieres que se use la clave.
  4. Haz clic en Siguiente.
Definir el uso extendido de la clave

Puedes usar esta configuración para seleccionar situaciones más detalladas en las que se puede usar la clave contenida en el certificado. Las opciones incluyen autenticación del servidor, autenticación del cliente, firma de código, protección del correo electrónico y mucho más.

Los usos extendidos de claves se definen a través de identificadores de objetos (OID). Si no lo haces, se permiten todas las situaciones de uso de claves.

Para obtener más información, consulta Uso extendido de la clave.

Para definir los usos extendidos de claves, haz lo siguiente:

  1. Opcional: Si quieres especificar los usos extendidos de claves para los certificados que el grupo de AC emite, haz clic en el botón de activación.
  2. Selecciona las casillas de verificación de las situaciones de uso extendido de la clave.
  3. Haz clic en Siguiente.
Definir identificadores de políticas

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

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

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

  1. Opcional: Agrega el identificador de política en el campo Identificadores de política.
  2. Haz clic en Siguiente.
Agregar servidores OCSP de Authority Information Access (AIA)

La extensión AIA de 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 el emisor del certificado.

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

Para agregar los servidores OCSP que aparecen en el campo de extensión de AIA en los certificados, haz lo siguiente. El siguiente procedimiento es opcional.

  1. Opcional: 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.
Configura extensiones adicionales

Si deseas configurar extensiones personalizadas adicionales para incluirlas en los certificados que emite el grupo de AC, haz lo siguiente. El siguiente procedimiento es opcional.

  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 Valor, agrega el valor codificado en base64 para el identificador.
  4. Si la extensión es crítica, selecciona La extensión es crítica.

Para guardar todas las configuraciones de valores del modelo de referencia, haz clic en Listo.

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

gcloud

Ejecuta el siguiente comando:

gcloud privateca pools create POOL_NAME

Reemplaza POOL_NAME por el nombre del grupo de AC.

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

gcloud privateca pools create POOL_NAME --tier=TIER_NAME

Reemplaza lo siguiente:

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

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

Reemplaza lo siguiente:

  • POOL_NAME: Es el nombre del grupo de AC.
  • PUBLISHING_ENCODING_FORMAT por PEM o DER.

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

Para obtener información sobre cómo aplicar restricciones al 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 AC.

    HTTP method and 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 configura como true.

    HTTP method and 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 AC

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

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

Console

Para agregar una etiqueta, haz lo siguiente:

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

    Ir a Certificate Authority Service

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

  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 AC existente.

Para editar una etiqueta existente, sigue estos pasos:

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

    Ir a Certificate Authority Service

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

  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 --update-labels foo=bar

Reemplaza POOL_ID por el nombre del grupo de AC.

¿Qué sigue?