Criar um pool de CA

Esta página descreve como criar pools de autoridades certificadoras (AC).

Um pool de ACs é uma coleção de várias ACs com uma política de emissão de certificados e uma política do Identity and Access Management (IAM) comuns. Um pool de ACs facilita o gerenciamento da alternância de ACs e permite que você alcance um total maior de consultas eficazes por segundo (QPS, na sigla em inglês).

É preciso criar um pool de ACs antes de usar Certificate Authority Service para criar uma AC. Para mais informações, consulte Visão geral dos pools de ACs.

Antes de começar

Verifique se você tem o papel do IAM de gerente de operação de serviço da CA (roles/privateca.caManager). Para informações sobre como conceder um IAM a um membro, consulte Conceder um único papel.

Definir as configurações do pool de ACs

Esta seção descreve as configurações de um pool de AC e oferece recomendações para decidir sobre elas.

Configurações permanentes do pool de AC

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

Local

Especifique o local do pool de ACs. Um pool de ACs é armazenado em um único local do Google Cloud. Recomendamos que você crie o pool de AC no mesmo local ou perto do local em que pretende usá-lo.

Para conferir a lista completa de locais com suporte, consulte Locais.

Nível

Escolha se você quer criar o pool de AC com o nível DevOps ou Enterprise. Essa escolha afeta se o serviço de AC mantém os certificados criados, se eles podem ser revogados mais tarde e a taxa máxima em que você pode criar 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 restringe os certificados que as ACs no pool de ACs podem emitir. Você pode 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 delas. Ao emitir um certificado, o URL do certificado de AC é incluído no certificado como uma extensão de acesso a informações de autoridade (AIA).

As ACs em pools de ACs de nível empresarial podem ser autorizadas a publicar listas de revogação de certificados (CRLs) no bucket do Cloud Storage associado. Ao emitir um certificado, um URL para essa CRL é incluído no certificado como a extensão do ponto de distribuição de CRL (CDP, na sigla em inglês). Não é possível encontrar a CRL sem a extensão CDP no certificado. Para mais informações, consulte Revogar certificados.

Também é possível selecionar o formato de codificação dos certificados de AC e CRLs publicados. Os formatos de codificação aceitos são Privacy Enhanced Mail (PEM) e Distinguished Encoding Rules (DER). Se um formato de codificação não for especificado, o PEM será usado.

Se você criar o pool de AC usando a CLI ou o console do Google Cloud, o serviço de AC vai ativar essas opções de publicação por padrão. Para mais informações, consulte Como desativar a publicação de certificados e CRLs de ACs em um pool de ACs.

Criar um pool de CA

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

Console

Escolher um nome para o pool de ACs

  1. Acesse a página Serviço de autoridade certificadora no console do Google Cloud.

    Acesse Certificate Authority Service

  2. Clique em Gerenciador de pools de AC.

  3. Clique em Criar pool.

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

  5. Selecione uma região no menu suspenso do 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 Próxima.

Configurar algoritmos e tamanhos de chaves permitidos

O serviço de autoridade certificadora permite escolher os algoritmos de assinatura para as chaves do Cloud KMS que geram as CAs no pool de ACs. Todos os algoritmos de chave são permitidos por padrão.

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

  1. Clique no botão.
  2. Clique em Adicionar um item.
  3. Na lista Type, 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 o tipo de curva elíptica.
    2. Clique em Concluído.
  4. Para adicionar outra chave permitida, clique em Adicionar um item e repita a etapa 2.

  5. Clique em Próxima.

Configurar métodos de solicitação de certificado

Para 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 com base em CSR, clique na chave.
  2. Opcional: para restringir solicitações de certificado com base em configuração, clique no interruptor.

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 bucket do Cloud Storage para as ACs no pool de ACs, clique na chave.
  2. Opcional: para não permitir a publicação de CRLs no bucket do Cloud Storage para as CAs no pool de CAs, clique no botão.
  3. Clique no menu para selecionar o formato de codificação dos certificados de AC e das CRLs publicados.

    Configure as opções de publicação para certificados de AC e CRLs das ACs no pool de ACs.

  4. Clique em Próxima.

Configurar valores de referência

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

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

É possível usar essa configuração para definir as maneiras de usar a chave contida no certificado. As opções de uso da chave incluem a codificação de chaves, a codificação de dados, a assinatura de certificados, a 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 que aparece, clique no botão se você quiser especificar usos de chaves básicas para os certificados.
  2. Marque as caixas de seleção para as formas de uso da chave.
  3. Selecione as maneiras de alto nível em que você quer que uma chave seja usada.
  4. Clique em Próxima.
Definir o uso estendido de chave

É possível usar essa configuração para selecionar cenários mais granulares em que a chave contida no certificado pode ser usada. As opções incluem autenticação do servidor, autenticação do cliente, assinatura de código, proteção de e-mail e muito mais.

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

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

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

  1. Opcional: para especificar os usos de chave estendidos dos certificados emitidos pelo pool de CAs, clique na chave.
  2. Marque as caixas de seleção para os cenários de uso estendido de chave.
  3. Clique em Próxima.
Definir identificadores de políticas

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

Para mais informações, consulte Políticas de certificados.

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íticas.
  2. Clique em Próxima.
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 em que você pode verificar o status de revogação do certificado.
  • O método de acesso do emissor do certificado.

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

Para adicionar os servidores OCSP que aparecem no campo de extensão AIA nos 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 Próxima.
Configurar outras extensões

Para configurar outras extensões personalizadas a serem incluídas nos certificados emitidos pelo pool de ACs, faça o seguinte. O procedimento a seguir é opcional.

  1. Clique em Adicionar item.
  2. No campo Identificador do objeto, adicione um identificador de objeto válido que esteja 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 é essencial.

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

Configurar restrições de extensão

Para impedir que todas as extensões de solicitações de certificado sejam incluídas nos certificados emitidos, clique na chave.

Depois de clicar no botão, você vai encontrar o campo Extensões de certificado conhecidas, que pode ser usado para selecionar as extensões de certificado. Para selecionar as extensões de certificado, faça o seguinte:

  1. Opcional: clique no campo Extensões de certificado conhecidas e limpe as extensões não obrigatórias do menu.
  2. Opcional: no campo Extensões personalizadas, adicione os identificadores de objetos das extensões que você quer incluir nos certificados emitidos pelo pool de ACs.
Configurar restrições de identidade

Para configurar restrições no assunto e nos SANs nos certificados emitidos pelo pool de ACs, faça o seguinte:

  1. Opcional: para impedir a transmissão do assunto nas solicitações de certificado, clique no botão de alternância.
  2. Opcional: para impedir a transmissão de nomes alternativos de assunto em solicitações de certificado, clique na chave.
  3. Opcional: adicione uma expressão da Common Expression Language (CEL) para colocar restrições nos sujeitos do certificado. Para mais informações, consulte Como usar a CEL.
  4. Clique em Próxima.

Para saber como configurar outros parâmetros 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 é necessário para o pool de AC, o nível Enterprise será selecionado por padrão. Se você quiser especificar o nível do pool de AC, execute o comando gcloud a seguir:

gcloud privateca pools create POOL_NAME --tier=TIER_NAME

Substitua:

Se você não especificar o formato de codificação de publicação do seu pool de AC, o formato de codificação de publicação PEM será selecionado por padrão. Se você quiser especificar o formato de codificação de publicação do seu pool de CA, execute o seguinte comando gcloud:

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

Substitua:

  • POOL_NAME: o nome do 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 restringir o tipo de certificado que um pool de ACs pode emitir, consulte Adicionar uma política de emissão de certificados a um pool de ACs.

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 serviço de CA, 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 serviço de CA, 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 serviço de CA, 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. Crie 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 é definida 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 seus recursos do serviço de CA. É 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 rótulo, faça o seguinte:

  1. Acesse a página Serviço de autoridade certificadora.

    Acesse Certificate Authority Service

  2. Na guia Gerenciador de pools de AC, selecione o pool de AC.

  3. Clique em Marcadores.

  4. Clique em Adicionar rótulo.

  5. Adicione um par de chave-valor.

  6. Clique em Salvar.

    Adicione um rótulo a um pool de ACs.

Para editar um rótulo, faça o seguinte:

  1. Acesse a página Serviço de autoridade certificadora.

    Acesse Certificate Authority Service

  2. Na guia Gerenciador de pools de AC, selecione o pool de AC.

  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