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 AC facilita la administración de la rotación de AC y te permite lograr un mayor número total 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 servicios de AC (roles/privateca.caManager). Para obtener información sobre cómo otorgar un IAM a un 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 permanente del grupo de AC

Los siguientes parámetros de configuración del grupo de AC no se pueden 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 creas tu grupo de AC en la misma ubicación o cerca de la ubicación en la que pretendes usarlo.

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

Nivel

Elige si quieres crear el grupo de AC con el nivel DevOps o el nivel Enterprise. Esta opción afecta si el servicio de AC conserva los certificados creados, si los certificados creados se pueden revocar más adelante y la velocidad máxima a la que puedes crear certificados 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 AC

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 impone restricciones a los certificados que las AC del grupo de AC pueden emitir. 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 las políticas de emisión.

Para obtener más información sobre la configuración de 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 AC de cada una de ellas. Cuando se emite un certificado, la URL a este certificado de 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, 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 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 AC y las CRL publicadas. Los formatos de codificación admitidos son correo con privacidad mejorada (PEM) y reglas de codificación distinguidas (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 AC y CRL para AC en un grupo de AC.

Crear grupo de CA

Para crear un grupo de AC, sigue las instrucciones que se indican a continuación:

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

  3. Haz clic en Crear grupo.

  4. Agrega un nombre único para el grupo de AC de 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 los algoritmos y tamaños de claves permitidos

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

Para restringir las claves permitidas en los certificados emitidos por el grupo de AC, 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 los 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 AC, 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.

Cómo configurar 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 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: Para 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 de los certificados de la AC y las CRL publicadas.

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

  4. Haz clic en Siguiente.

Configura los valores de referencia

Para configurar los valores 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 los valores de referencia.
Define el uso base de la clave

Puedes usar este parámetro de configuración para configurar las formas en que se puede usar la clave contenida en el certificado. Las opciones de uso de claves incluyen el cifrado de claves, el cifrado de datos, la firma de certificados, la firma de CRL y mucho más.

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

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

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

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

Los usos extendidos de claves se definen con identificadores de objetos (OID). Si no configuras los usos extendidos de claves, se permiten todas las situaciones de uso de claves.

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

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

  1. Opcional: Para especificar los usos extendidos de claves para los certificados que emite el grupo de AC, haz clic en el botón de activación.
  2. Selecciona las casillas de verificación de los casos de uso de claves extendidas.
  3. Haz clic en Siguiente.
Define los identificadores de políticas

La extensión de políticas de certificados del certificado expresa las políticas que sigue el grupo de AC emisoras. 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 AC. Esta extensión te ayuda a verificar los certificados que emite el grupo de AC 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. Opcional: 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 de un certificado proporciona la siguiente información:

  • Es la 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 OCSP que aparecen en el campo de extensión 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

Para configurar extensiones personalizadas adicionales que se incluirán en los certificados emitidos por 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 que tenga formato de dígitos separados por puntos.
  3. En el campo Value, agrega el valor codificado en base64 del identificador.
  4. Si la extensión es fundamental, selecciona La extensión es fundamental.

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

Configura restricciones de extensión

Para no permitir 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 certificado 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 certificados conocidas y borra las extensiones no requeridas del menú.
  2. Opcional: En el campo Extensiones personalizadas, agrega los identificadores de objetos para las extensiones que deseas que se incluyan en los certificados que emite el grupo de AC.
Configura restricciones de identidad

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

  1. Opcional: Para impedir que se pase el asunto de las solicitudes de certificado, haz clic en el botón de activación.
  2. Opcional: Para impedir 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 establecer restricciones en las entidades de los certificados. Para obtener más información, consulta Cómo usar CEL.
  4. Haz clic en Siguiente.

Para obtener información sobre cómo configurar parámetros adicionales en la política de emisión de certificados, consulta IssuancePolicy.

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 requieres para tu grupo de AC, el nivel Enterprise se selecciona 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, el formato de codificación de publicación PEM se selecciona 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 de tu 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 pools create.

Para obtener información sobre cómo aplicar restricciones al tipo de certificados que puede emitir un grupo de AC, consulta Cómo agregar 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 el servicio de AC, 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 el servicio de AC, 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 el servicio de AC, 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.

    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 AC

Una etiqueta es un par clave-valor que te ayuda a organizar los recursos del servicio de AC. 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 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, 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. 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?