Criar um pool de CA

Nesta página, descrevemos como criar pools de autoridade certificadora (AC).

Um pool de CAs é um conjunto de várias CAs com um certificado em comum política de emissão e do Identity and Access Management (IAM). Um pool de AC faz O gerenciamento da rotação de CAs é mais fácil e permite um aumento da eficácia total consultas por segundo (QPS).

Você precisa criar um pool de ACs antes de usar o Certificate Authority Service para criar uma AC. Para mais informações, consulte Visão geral de pools de CA.

Antes de começar

Verifique se você tem o CA Service Operation Manager (roles/privateca.caManager) papel do IAM. Para informações sobre conceder um IAM a um principal, consulte Conceder um único de rede.

Decida as configurações do pool de ACs

Esta seção descreve as configurações de um pool de ACs e fornece recomendações para decidir as configurações.

Configurações do pool de CAs permanentes

As configurações do pool de AC a seguir não podem ser alteradas após a criação do pool de AC.

Local

Especifique o local do pool de ACs. Um pool de ACs é armazenado em uma única Local do Google Cloud. Recomendamos que você crie seu pool de ACs no mesmo local ou próximo ao local onde você pretende para usá-lo.

Para ver a lista completa de locais compatíveis, consulte Locais.

Nível

Escolha se você quer criar o pool de ACs com o DevOps ou o Enterprise camada de armazenamento. Essa escolha afeta a persistência ou não do serviço de CA certificados, se os certificados criados podem ser revogados posteriormente e a taxa máxima de criação de certificados das ACs no pool de ACs. Para mais informações, consulte Selecionar os níveis de operação.

Configurações opcionais do pool de ACs

Política de emissão de certificados

Um pool de ACs pode ter uma política de emissão de certificados. Essa política de emissão impõe restrições aos certificados que as CAs no pool de AC têm permissão para emitir. É possível atualizar a política de emissão de um pool de ACs depois de criá-lo. Para mais informações, consulte Visão geral de modelos e políticas de emissão.

Para mais informações sobre como configurar uma política de emissão de certificados, consulte Adicionar uma política de emissão de certificados a um pool de ACs.

Opções de publicação

É possível configurar um pool de ACs para publicar os certificados de AC de cada uma das ACs dele. Durante a emissão de um certificado, o URL para esse certificado de CA é incluído no certificado como uma extensão de acesso a informações de autoridade (AIA).

As ACs em pools de CAs de nível empresarial podem publicar certificados listas de revogação (CRLs) ao Cloud Storage associado do Google Cloud. Durante a emissão de um certificado, um URL para essa CRL é incluído no como extensão do ponto de distribuição de CRL (CDP). Não foi possível encontrar a CRL sem a extensão do CDP no certificado. Para mais informações, consulte Revogar certificados.

Você também pode selecionar o formato de codificação dos certificados de CA publicados e CRLs. Os formatos de codificação compatíveis são o Privacy Enhanced Mail (PEM) e Regras de codificação distintas (DER, na sigla em inglês). Se um formato de codificação não for especificado, PEM serão usados.

Se você criar o pool de CAs usando a CLI ou o console do Google Cloud, O CA Service ativa essas opções de publicação por padrão. Para Para mais informações, consulte Como desativar o certificado de CA e a publicação de CRL para CAs em uma CA pool.

Criar um pool de CA

Para criar um pool de ACs, siga estas instruções:

Console

Escolha um nome para o pool de ACs

  1. Acesse a página Certificate Authority Service no console do Google Cloud.

    Acesse Certificate Authority Service

  2. Clique em Gerenciador de pool de CAs.

  3. Clique em Criar pool.

  4. Adicione um nome ao pool de ACs exclusivo para a região.

  5. Selecione uma região na lista suspensa no campo Região. Para mais informações, consulte Como escolher o melhor local.

  6. Selecione o nível Enterprise ou DevOps. Para mais informações, consulte Selecionar os níveis de operação.

  7. Clique em Next.

Configurar tamanhos e algoritmos de chave permitidos

O CA Service permite escolher os algoritmos de assinatura para o Chaves do Cloud KMS que armazenam as ACs no pool de ACs. Todos os principais algoritmos são permitidos por padrão.

Para restringir as chaves permitidas nos certificados emitidos pelo pool de ACs, faça o seguinte: o seguinte. Esse é um procedimento opcional.

  1. Clique no botão de alternância.
  2. Clique em Adicionar um item.
  3. Na lista Tipo, selecione o tipo de chave.

    Se você quiser usar chaves RSA, faça o seguinte:

    1. Opcional: adicione o tamanho mínimo do módulo em bits.
    2. Opcional: adicione o tamanho máximo do módulo em bits.
    3. Clique em Concluído.

    Se você quiser usar chaves de curva elíptica, faça o seguinte:

    1. Opcional: na lista Tipo de curva elíptica, selecione a tipo de curva.
    2. Clique em Concluído.
  4. Para adicionar outra chave permitida, clique em Adicionar um item e repita a etapa 2.

  5. Clique em Next.

Configurar métodos de solicitação de certificado

Limitar os métodos que os solicitantes de certificados podem usar para solicitar certificados do pool de ACs, faça o seguinte:

  1. Opcional: para restringir solicitações de certificado baseadas em CSR, clique no botão de ativação.
  2. Opcional: para restringir solicitações de certificado com base em configuração, clique no botão de alternância.

Configurar opções de publicação

Para configurar as opções de publicação, faça o seguinte:

  1. Opcional: para não permitir a publicação de certificados de CA no Cloud Storage para as ACs no pool de ACs, clique no botão de alternância.
  2. Opcional: para proibir a publicação de CRLs no bucket do Cloud Storage para as ACs no pool de ACs, clique no botão de alternância.
  3. Clique no menu para selecionar o formato de codificação de certificados CA e CRLs publicados.

    Configurar opções de publicação para certificados de CA e CRLs para as CAs no pool de CAs.

  4. Clique em Next.

. Configurar valores de referência

Para configurar valores de referência nos certificados emitidos do pool de ACs, faça o seguinte: o seguinte:

  1. Clique no botão de alternância.
  2. Clique em Configurar valores de referência.
. Definir o uso de chave base

Você pode usar essa configuração para definir como a chave contida em o certificado possa ser usado. As opções de uso incluem chaves encriptação de dados, assinatura de certificado, assinatura de CRL e muito mais.

Para mais informações, consulte Uso da chave.

Para definir os usos de chave base, faça o seguinte:

  1. Opcional: na janela exibida, clique no botão de alternância. Se você quer especificar os usos base de chave para os certificados.
  2. Marque as caixas de seleção referentes às maneiras em que você quer que uma chave seja usada.
  3. Selecione as maneiras gerais como você quer que uma chave seja usada.
  4. Clique em Next.
. Definir o uso estendido de chaves

Use essa configuração para selecionar cenários mais granulares para os quais a chave contidas no certificado possam ser usadas. As opções incluem as opções autenticação do cliente, assinatura de código, proteção de e-mail e mais.

Os usos estendidos de chave são definidos com identificadores de objeto (OIDs). Se você não configurar os usos estendidos de chave, todos os cenários de uso de chave serão permitidos.

Para mais informações, consulte Uso estendido de chave.

Para definir os usos estendidos de chave, faça o seguinte:

  1. Opcional: para especificar os usos de chave estendidos para os certificados que o Problemas no pool de ACs, clique no botão.
  2. Marque as caixas de seleção dos cenários de uso estendido de chave.
  3. Clique em Next.
. Definir identificadores de políticas

A extensão de políticas de certificado no certificado expressa as políticas que o pool de AC emissoras segue. Essa extensão pode incluir informações sobre como as identidades são validadas antes da emissão, como os certificados são revogado e como a integridade do pool de ACs é garantida. Essa extensão ajuda você verificar os certificados emitidos pelo pool de ACs e conferir como eles são usadas.

Saiba mais em Políticas de certificado.

Para especificar a política que define o uso do certificado, faça o seguinte:

  1. Opcional: adicione o identificador de política no campo Identificadores de política.
  2. Clique em Next.
. Adicionar servidores OCSP de acesso a informações de autoridade (AIA)

A extensão AIA em um certificado fornece as seguintes informações:

  • Endereço dos servidores OCSP de onde é possível verificar o status de revogação do certificado.
  • O método de acesso para o emissor do certificado.

Para mais informações, consulte Acesso a informações de autoridade.

Para adicionar os servidores OCSP que aparecem no campo de extensão AIA na os certificados, faça o seguinte. O procedimento a seguir é opcional.

  1. Opcional: clique em Adicionar item.
  2. No campo URL do servidor, adicione o URL do servidor OCSP.
  3. Clique em Concluído.
  4. Clique em Next.
. Configurar extensões adicionais

Para configurar mais extensões personalizadas a serem incluídas na certificados emitidos pelo pool de ACs, siga estas etapas: O procedimento a seguir é opcional.

  1. Clique em Adicionar item.
  2. No campo Identificador de objetos, adicione um identificador de objeto válido que é formatado como dígitos separados por pontos.
  3. No campo Valor, adicione o valor codificado em base64 para o identificador.
  4. Se a extensão for essencial, selecione A extensão é crítica.

Para salvar todas as configurações de valores de referência, clique em Concluído.

Configurar restrições de extensão

Para impedir a inclusão de todas as extensões de solicitações de certificado em certificados emitidos, clique no botão de ativação.

Depois de clicar no botão, você verá a página Certificado conhecido extensões que pode ser usado para selecionar as extensões do certificado. Para selecione as extensões de certificado, faça o seguinte:

  1. Opcional: clique no campo Extensões de certificado conhecidas e limpe a não necessárias no menu.
  2. Opcional: no campo Extensões personalizadas, adicione os identificadores de objeto. extensões que você quer incluir nos certificados que o pool de ACs problemas.
. Configurar restrições de identidade

Para configurar restrições sobre o assunto e SANs nos certificados que os problemas do pool de ACs, faça o seguinte:

  1. Opcional: para não permitir a transmissão do assunto em solicitações de certificado clique no botão de alternância.
  2. Opcional: para não permitir nomes alternativos do assunto em solicitações de certificado sejam transmitidos, clique no botão.
  3. Opcional: adicionar uma expressão Common Expression Language (CEL) para colocar restrições quanto a assuntos dos certificados. Para mais informações, consulte Como usar CEL.
  4. Clique em Next.

Para saber como configurar parâmetros adicionais na política de emissão de certificados, consulte IssuancePolicy.

Para criar o pool de ACs, clique em Concluído.

gcloud

Execute este comando:

gcloud privateca pools create POOL_NAME

Substitua POOL_NAME pelo nome do pool de ACs.

Se você não especificar qual nível exige para seu pool de ACs, o Enterprise é selecionada por padrão. Se você quiser especificar o nível Pool de CAs, execute o seguinte comando gcloud:

gcloud privateca pools create POOL_NAME --tier=TIER_NAME

Substitua:

Se você não especificar o formato de codificação de publicação para o pool de ACs, o PEM o formato de codificação de publicação é selecionado por padrão. Se você quiser especificar o formato de codificação de publicação para seu Pool de CAs, execute o seguinte comando gcloud:

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

Substitua:

  • POOL_NAME: o nome do seu pool de ACs.
  • PUBLISHING_ENCODING_FORMAT: PEM ou DER.

Para mais informações sobre o comando gcloud privateca pools create, consulte gcloud privateca pools create.

Para informações sobre como impor restrições ao tipo de certificado que um pool de AC pode emitir, consulte Adicionar uma política de emissão de certificados a um pool 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 autenticar no CA Service, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 autenticar no CA Service, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 autenticar no CA Service, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 REST

  1. Criar um pool de ACs.

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
    "tier": "ENTERPRISE"
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

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

  2. Pesquise a operação até que ela seja concluída.

    A operação é concluída quando a propriedade done da operação de longa duração é definido como true.

    Método HTTP e URL:

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

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    {
     "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"
     }
    }
    

Adicionar ou atualizar rótulos em um pool de ACs

Um rótulo é um par de chave-valor que ajuda a organizar seu serviço de AC. do Google Cloud. É possível filtrar os recursos com base nos rótulos.

Para adicionar ou atualizar rótulos em um pool de ACs, faça o seguinte:

Console

Para adicionar um marcador, faça o seguinte:

  1. Acesse a página Certificate Authority Service.

    Acesse Certificate Authority Service

  2. Na guia Gerenciador de pool de CAs, selecione o pool de ACs.

  3. Clique em Marcadores.

  4. Clique em Adicionar marcador.

  5. Adicione um par de chave-valor.

  6. Clique em Salvar.

    Adicionar um rótulo a um pool de ACs atual.

Para editar um marcador, faça o seguinte:

  1. Acesse a página Certificate Authority Service.

    Acesse Certificate Authority Service

  2. Na guia Gerenciador de pool de CAs, selecione o pool de ACs.

  3. Clique em Marcadores.

  4. Edite o valor do rótulo.

  5. Clique em Salvar.

gcloud

Execute este comando:

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

Substitua POOL_ID pelo nome do pool de ACs.

A seguir