Crie um grupo de ACs

Esta página descreve como criar conjuntos de autoridades de certificação (CA).

Um conjunto de ACs é uma coleção de várias ACs com uma política de emissão de certificados comum e uma política de gestão de identidade e de acesso (IAM). Um conjunto de ACs facilita a gestão da rotação de ACs e permite alcançar um total de consultas eficazes por segundo (CPS) mais elevado.

Tem de criar um conjunto de ACs antes de poder usar o Certificate Authority Service para criar uma AC. Para mais informações, consulte o artigo Vista geral dos conjuntos de ACs.

Antes de começar

Certifique-se de que tem a função do IAM (roles/privateca.caManager) de gestor de operações do serviço de AC. Para ver informações sobre como conceder um IAM a um principal, consulte o artigo Conceda uma única função.

Decida as definições do conjunto de ACs

Esta secção descreve as definições de um conjunto de ACs e fornece recomendações para decidir as definições.

Definições permanentes do conjunto de ACs

Não é possível alterar as seguintes definições do conjunto de ACs após a criação do conjunto de ACs.

Location
Especifique a localização do conjunto de ACs. Um conjunto de ACs é armazenado numa única Google Cloud localização. Recomendamos que crie o conjunto de ACs na mesma localização ou perto da localização onde pretende usá-lo.
Para ver a lista completa de localizações suportadas, consulte Localizações.
Nível
Escolha se quer criar o conjunto de ACs com o nível DevOps ou o nível Enterprise. Esta escolha afeta a persistência dos certificados criados pelo serviço de AC, se os certificados criados podem ser revogados posteriormente e a taxa máxima à qual pode criar certificados a partir das ACs no conjunto de ACs. Para mais informações, consulte o artigo Selecione os níveis de operação.

Definições opcionais do grupo de ACs

Política de emissão de certificados

Um conjunto de ACs pode ter uma política de emissão de certificados. Esta política de emissão impõe restrições aos certificados que as ACs no conjunto de ACs podem emitir. Pode atualizar a política de emissão de um conjunto de CAs depois de criar o conjunto de CAs. Para mais informações, consulte a Vista geral dos modelos e das políticas de emissão.

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

Opções de publicação

Pode configurar um conjunto de ACs para publicar os certificados da AC para cada uma das respetivas ACs. Ao emitir um certificado, o URL para este certificado da AC é incluído no certificado como uma extensão de acesso a informações da autoridade (AIA).

As ACs nos conjuntos de ACs de nível empresarial podem ter autorização para publicar listas de revogação de certificados (LRCs) no contentor do Cloud Storage associado. Quando emite um certificado, é incluído um URL para esta CRL no certificado como a extensão do ponto de distribuição da CRL (CDP). Não é possível encontrar a CRL sem a extensão CDP no certificado. Para mais informações, consulte o artigo Revogue certificados.

Também pode selecionar o formato de codificação dos certificados de CA e das CRLs publicados. Os formatos de codificação suportados são Privacy Enhanced Mail (PEM) e Distinguished Encoding Rules (DER). Se não for especificado um formato de codificação, é usado o formato PEM.

Se criar o conjunto de ACs através da Google Cloud CLI ou da Google Cloud consola, o CA Service ativa estas opções de publicação por predefinição. Para mais informações, consulte o artigo Desativar a publicação de certificados da AC e CRLs para ACs num conjunto de ACs.

Crie um grupo de ACs

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

Consola

Escolha um nome para o grupo de CAs

  1. Aceda à página Serviço de autoridade de certificação na Google Cloud consola.

    Aceda ao serviço de autoridade de certificação

  2. Clique em Gestor do conjunto de ACs.

  3. Clique em Criar conjunto.

  4. Adicione um nome para o conjunto de ACs que seja exclusivo para a região.

  5. Selecione uma região no menu pendente no campo Região. Para mais informações, consulte o artigo Escolher a melhor localização.

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

  7. Clicar em Seguinte.

Configure os algoritmos e os tamanhos de chaves permitidos

O serviço de AC permite-lhe escolher os algoritmos de assinatura para as chaves do Cloud KMS que suportam as ACs no conjunto de ACs. Por predefinição, todos os algoritmos de chaves são permitidos.

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

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

    Se 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 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 o passo 2.

  5. Clicar em Seguinte.

Configure métodos de pedido de certificado

Para colocar limitações nos métodos que os requerentes de certificados podem usar para pedir certificados ao conjunto de ACs, faça o seguinte:

  1. Opcional: para restringir pedidos de certificados baseados em CSR, clique no botão para ativar/desativar.
  2. Opcional: para restringir os pedidos de certificados baseados na configuração, clique no botão para ativar/desativar.

Configure as 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 da AC no contentor do Cloud Storage para as ACs no conjunto de ACs, clique no botão para ativar/desativar.
  2. Opcional: para não permitir a publicação de CRLs no contentor do Cloud Storage para as ACs no conjunto de ACs, clique no botão para ativar/desativar.
  3. Clique no menu para selecionar o formato de codificação para certificados de AC publicados e CRLs.

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

  4. Clicar em Seguinte.

Defina a utilização da chave base

Esta definição refere-se ao campo Key Usage num certificado digital. Especifica como a chave privada do certificado pode ser usada, como para encriptação de chaves, encriptação de dados, assinatura de certificados e assinatura de CRL. Para mais informações, consulte o artigo Utilização de chaves.

  1. Para selecionar as utilizações de chaves base, clique no botão Especificar utilizações de chaves base para certificados emitidos a partir deste conjunto de ACs e, de seguida, selecione as opções apresentadas.
  2. Clicar em Seguinte.
Defina a utilização alargada da chave

Esta definição refere-se ao campo Extended Key Usage (EKU) num certificado digital. Fornece restrições mais específicas e refinadas sobre como a chave pode ser usada, como para autenticação de servidor, autenticação de cliente, assinatura de código e proteção de email. Para mais informações, consulte o artigo Utilização alargada da chave.

As utilizações alargadas da chave são definidas através de identificadores de objetos (OIDs). Se não configurar as utilizações alargadas da chave, todos os cenários de utilização da chave são permitidos.

  1. Para selecionar as utilizações alargadas da chave, clique no botão Escrever utilizações alargadas da chave para certificados emitidos a partir deste conjunto de AC e, de seguida, selecione as opções indicadas.
  2. Clicar em Seguinte.
Defina identificadores de políticas

A extensão de políticas de certificados no certificado expressa as políticas que o conjunto de ACs emissoras segue. Esta 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 conjunto de ACs é garantida. Esta extensão ajuda a validar os certificados emitidos pelo conjunto de ACs e a ver como os certificados são usados.

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

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

  1. Adicione o identificador da política no campo Identificadores de políticas.
  2. Clicar em Seguinte.
Adicione servidores OCSP de acesso a informações da autoridade (AIA)

A extensão AIA num certificado faculta as seguintes informações:

  • Endereço dos servidores OCSP a partir dos quais pode verificar o estado de revogação do certificado.
  • O método de acesso para o emissor do certificado.

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

Para adicionar os servidores OCSP que aparecem no campo de extensão AIA nos certificados, faça o seguinte:

  1. Clique em Adicionar item.
  2. No campo URL do servidor, adicione o URL do servidor OCSP.
  3. Clique em Concluído.
  4. Clicar em Seguinte.
Opções de CA

O campo Opções da AC num modelo de certificado define como o certificado resultante pode ser usado numa hierarquia da autoridade de certificação (AC). As opções da AC determinam se um certificado pode ser usado para assinar outros certificados e, se for o caso, as restrições nos certificados que emite.

Escolha uma das opções seguintes:

  1. Inclua as configurações para descrever as extensões X.509 da AC: especifique as definições num modelo de certificado que controlam as extensões X.509.

  2. Restringir os certificados emitidos para utilização apenas em ACs: esta opção aparece apenas se selecionar a caixa de verificação mencionada no passo anterior. Este valor booleano indica se o certificado é um certificado de AC. Se estiver definido como true, o certificado pode ser usado para assinar outros certificados. Se false, o certificado é um certificado de entidade e não pode assinar outros certificados. Se clicar neste botão para ativar/desativar, é-lhe pedido que defina restrições de nomes para a extensão em certificados da AC.

  3. Inclua as configurações para descrever as extensões X.509 de restrição do comprimento do caminho: Especifique as definições que controlam o tempo de duração de uma cadeia de certificados, originada de um certificado específico. Se o comprimento máximo do caminho do emissor estiver definido como 0, a AC só pode emitir certificados de entidade final. Se estiver definido como 1, a cadeia abaixo deste certificado da AC só pode incluir uma AC subordinada. Se não for declarado um valor, o número de ACs subordinadas na cadeia abaixo desta AC não tem limite.

  4. Clicar em Seguinte.
Configure extensões adicionais

Para configurar extensões personalizadas adicionais a incluir nos certificados emitidos pelo conjunto de ACs, faça o seguinte:

  1. Clique em Adicionar item.
  2. No campo Identificador do objeto, adicione um identificador do objeto válido 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 fundamental, selecione A extensão é fundamental.

Para guardar todas as configurações de valor de base, clique em Concluído.

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

gcloud

Execute o seguinte comando:

gcloud privateca pools create POOL_NAME --location=LOCATION

Substitua o seguinte:

  • POOL_NAME: o nome do grupo de ACs.
  • LOCATION: a localização onde quer criar o conjunto de ACs. Para ver a lista completa de localizações, consulte Localizações.

Se não especificar o nível necessário para o seu conjunto de ACs, o nível Enterprise é selecionado por predefinição. Se quiser especificar o nível do seu conjunto de ACs, execute o seguinte comando gcloud:

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

Substitua o seguinte:

  • POOL_NAME: o nome do seu conjunto de ACs.
  • LOCATION: a localização onde quer criar o conjunto de ACs. Para ver a lista completa de localizações, consulte Localizações.
  • TIER_NAME: devops ou enterprise. Para mais informações, consulte o artigo Selecione os níveis de operação.

Se não especificar o formato de codificação de publicação para o seu conjunto de ACs, o PEM formato de codificação de publicação é selecionado por predefinição. Se quiser especificar o formato de codificação de publicação para o seu conjunto de CA, execute o seguinte comando gcloud:

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

Substitua o seguinte:

  • POOL_NAME: o nome do seu conjunto de ACs.
  • LOCATION: a localização onde quer criar o grupo de CA. Para ver a lista completa de localizações, consulte Localizações.
  • PUBLISHING_ENCODING_FORMAT: PEM ou DER.

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

Para obter informações sobre como colocar restrições no tipo de certificados que um conjunto de ACs pode emitir, consulte o artigo Adicione uma política de emissão de certificados a um conjunto 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"
  }
}

Ir

Para se autenticar no serviço de AC, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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 se autenticar no serviço de AC, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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 se autenticar no serviço de AC, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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 conjunto de CAs.

    Método HTTP e URL:

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

    Corpo JSON do pedido:

    {
      "tier": "ENTERPRISE"
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

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

  2. Sondar a operação até estar concluída.

    A operação está concluída quando a propriedade done da operação de longa duração está definida como true.

    Método HTTP e URL:

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

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

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

Adicione ou atualize etiquetas num conjunto de ACs

Uma etiqueta é um par de chave-valor que ajuda a organizar os recursos do serviço de CA. Pode filtrar os seus recursos com base nas respetivas etiquetas.

Para adicionar ou atualizar etiquetas num conjunto de ACs, faça o seguinte:

Consola

Para adicionar uma etiqueta, faça o seguinte:

  1. Aceda à página Serviço de autoridade de certificação.

    Aceda ao serviço de autoridade de certificação

  2. No separador Gestor de conjunto de ACs, selecione o conjunto de ACs.

  3. Clique em Etiquetas.

  4. Clique em Adicionar etiqueta.

  5. Adicione um par de chave-valor.

  6. Clique em Guardar.

    Adicione uma etiqueta a um grupo de PAs existente.

Para editar uma etiqueta existente, faça o seguinte:

  1. Aceda à página Serviço de autoridade de certificação.

    Aceda ao serviço de autoridade de certificação

  2. No separador Gestor de conjunto de ACs, selecione o conjunto de ACs.

  3. Clique em Etiquetas.

  4. Edite o valor da etiqueta.

  5. Clique em Guardar.

gcloud

Execute o seguinte comando:

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

Substitua o seguinte:

  • POOL_ID: o nome do grupo de ACs.
  • LOCATION: a localização do grupo de ACs. Para ver a lista completa de localizações, consulte Localizações.

O que se segue?