Crea un pool di CA

Questa pagina descrive come creare pool di autorità di certificazione (CA).

Un pool di CA è una raccolta di più CA con un criterio di emissione dei certificati e un criterio IAM (Identity and Access Management) comuni. Un pool di CA semplifica la gestione della rotazione delle CA e consente di ottenere un numero totale di query effettive al secondo (QPS) più elevato.

Devi creare un pool di CA prima di poter utilizzare Certificate Authority Service per creare una CA. Per saperne di più, consulta Panoramica dei pool di CA.

Prima di iniziare

Assicurati di avere il ruolo IAM CA Service Operation Manager (roles/privateca.caManager). Per informazioni sulla concessione di un IAM a un'entità, consulta Concedere un singolo ruolo.

Decidi le impostazioni del pool di CA

Questa sezione descrive le impostazioni di un pool di CA e fornisce suggerimenti per decidere le impostazioni.

Impostazioni del pool di CA permanente

Le seguenti impostazioni del pool di CA non possono essere modificate dopo la creazione del pool di CA.

Località

Specifica la località del pool di CA. Un pool di CA è archiviato in un'unica località Google Cloud. Ti consigliamo di creare il pool di CA nella stessa località o vicino alla località in cui intendi utilizzarlo.

Per l'elenco completo delle località supportate, consulta la sezione Località.

Livello

Scegli se creare il pool di CA con il livello DevOps o Enterprise. Questa scelta determina se il servizio CA mantiene o meno i certificati creati, se i certificati creati possono essere revocati in un secondo momento e la frequenza massima con cui puoi creare certificati dalle CA nel pool di CA. Per ulteriori informazioni, consulta Selezionare i livelli di operazioni.

Impostazioni facoltative del pool di CA

Criteri di emissione dei certificati

Un pool di CA può avere un criterio di emissione dei certificati. Questo criterio di emissione pone limitazioni sui certificati che le CA nel pool di CA sono autorizzate a emettere. Puoi aggiornare il criterio di emissione di un pool di CA dopo aver creato il pool di CA. Per saperne di più, consulta la Panoramica dei modelli e dei criteri di emissione.

Per ulteriori informazioni sulla configurazione di un criterio di emissione dei certificati, consulta Aggiungere un criterio di emissione dei certificati a un pool di CA.

Opzioni di pubblicazione

Puoi configurare un pool di CA per la pubblicazione dei certificati CA per ciascuna delle sue CA. Quando emetti un certificato, l'URL del certificato CA è incluso nel certificato come estensione di accesso alle informazioni sull'autorità (AIA).

Le CA nei pool di CA di livello Enterprise possono essere autorizzate a pubblicare elenchi di revoca dei certificati (CRL) nel bucket Cloud Storage associato. Quando emetti un certificato, un URL a questo elenco revoche certificati viene incluso nel certificato come estensione CDP (CRL Distribution Point). Impossibile trovare l'elenco revoche certificati senza l'estensione CDP nel certificato. Per maggiori informazioni, consulta la pagina Revocare i certificati.

Puoi anche selezionare il formato di codifica dei certificati CA e CRL pubblicati. I formati di codifica supportati sono PEM (Privacy Enhanced Mail) e DER (Distinguish Encoding Rules). Se non viene specificato un formato di codifica, verrà usato PEM.

Se crei il pool di CA utilizzando Google Cloud CLI o la console Google Cloud, CA Service abilita queste opzioni di pubblicazione per impostazione predefinita. Per ulteriori informazioni, consulta la sezione su come disabilitare la pubblicazione di certificati CA e CRL per le CA in un pool di CA.

Crea un pool di CA

Per creare un pool di CA, segui queste istruzioni:

Console

Scegli un nome per il pool di CA

  1. Vai alla pagina Certificate Authority Service nella console Google Cloud.

    Vai a Certificate Authority Service

  2. Fai clic su Gestore del pool di CA.

  3. Fai clic su Crea pool.

  4. Aggiungi un nome per il pool di CA univoco per la regione.

  5. Seleziona una regione dal menu a discesa nel campo Regione. Per ulteriori informazioni, consulta Scegliere la località migliore.

  6. Seleziona il livello Enterprise o DevOps. Per ulteriori informazioni, consulta Selezionare i livelli di operazioni.

  7. Fai clic su Avanti.

Configurare gli algoritmi e le dimensioni della chiave consentiti

CA Service consente di scegliere gli algoritmi di firma per le chiavi Cloud KMS a supporto delle CA nel pool di CA. Tutti gli algoritmi della chiave sono consentiti per impostazione predefinita.

Per limitare le chiavi consentite nei certificati emessi dal pool di CA, segui questi passaggi. Questa è una procedura facoltativa.

  1. Fai clic sul pulsante di attivazione/disattivazione.
  2. Fai clic su Aggiungi un elemento.
  3. Nell'elenco Tipo, seleziona il tipo di chiave.

    Se vuoi utilizzare le chiavi RSA, segui questi passaggi:

    1. (Facoltativo) Aggiungi la dimensione minima del modulo in bit.
    2. (Facoltativo) Aggiungi la dimensione massima del modulo in bit.
    3. Fai clic su Fine.

    Se vuoi utilizzare le chiavi a curva ellittica, segui questi passaggi:

    1. (Facoltativo) Nell'elenco Tipo di curva ellittica, seleziona il tipo di curva ellittica.
    2. Fai clic su Fine.
  4. Per aggiungere un'altra chiave consentita, fai clic su Aggiungi un elemento e ripeti il passaggio 2.

  5. Fai clic su Avanti.

Configurare i metodi di richiesta dei certificati

Per applicare limitazioni ai metodi che i richiedenti dei certificati possono utilizzare per richiedere certificati al pool di CA, segui questi passaggi:

  1. (Facoltativo) Per limitare le richieste di certificati basati su CSR, fai clic sul pulsante di attivazione/disattivazione.
  2. (Facoltativo) Per limitare le richieste di certificati basate sulla configurazione, fai clic sul pulsante di attivazione/disattivazione.

Configurare le opzioni di pubblicazione

Per configurare le opzioni di pubblicazione:

  1. (Facoltativo) Per non consentire la pubblicazione di certificati CA nel bucket Cloud Storage per le CA nel pool di CA, fai clic sul pulsante di attivazione/disattivazione.
  2. (Facoltativo) Per non consentire la pubblicazione di CRL nel bucket Cloud Storage per le CA nel pool di CA, fai clic sul pulsante di attivazione/disattivazione.
  3. Fai clic sul menu per selezionare il formato di codifica per i certificati CA e CRL pubblicati.

    Configura le opzioni di pubblicazione per i certificati CA e CRL per le CA nel pool di CA.

  4. Fai clic su Avanti.

Configura i valori di riferimento

Per configurare i valori di riferimento nei certificati emessi dal pool di CA, segui questi passaggi:

  1. Fai clic sul pulsante di attivazione/disattivazione.
  2. Fai clic su Configura valori base di riferimento.
Definisci l'utilizzo di base della chiave

Puoi utilizzare questa impostazione per configurare le modalità di utilizzo della chiave contenuta nel certificato. Le opzioni per l'utilizzo della chiave includono crittografia delle chiavi, crittografia dei dati, firma dei certificati, firma di CRL e altro ancora.

Per maggiori informazioni, vedi Utilizzo delle chiavi.

Per definire gli utilizzi di base della chiave, segui questi passaggi:

  1. (Facoltativo) Nella finestra visualizzata, fai clic sul pulsante di attivazione/disattivazione se vuoi specificare gli utilizzi di base della chiave per i certificati.
  2. Seleziona le caselle di controllo relative alle modalità di utilizzo di una chiave.
  3. Seleziona i modi generali in cui vuoi utilizzare una chiave.
  4. Fai clic su Avanti.
Definisci l'utilizzo esteso della chiave

Puoi utilizzare questa impostazione per selezionare scenari più granulari in cui è possibile utilizzare la chiave contenuta nel certificato. Le opzioni includono autenticazione server, autenticazione client, firma codice, protezione email e altro ancora.

Gli utilizzi estesi della chiave sono definiti mediante identificatori di oggetti (OID). Se non configuri gli utilizzi estesi delle chiavi, sono consentiti tutti gli scenari di utilizzo delle chiavi.

Per maggiori informazioni, consulta la sezione Utilizzo esteso della chiave.

Per definire gli utilizzi estesi della chiave, segui questi passaggi:

  1. (Facoltativo) Per specificare gli utilizzi estesi della chiave per i certificati emessi dal pool di CA, fai clic sul pulsante di attivazione/disattivazione.
  2. Seleziona le caselle di controllo per gli scenari di utilizzo esteso delle chiavi.
  3. Fai clic su Avanti.
Definire gli identificatori dei criteri

L'estensione dei criteri del certificato nel certificato esprime i criteri seguiti dal pool di CA emittente. Questa estensione può includere informazioni su come vengono convalidate le identità prima dell'emissione dei certificati, come vengono revocati i certificati e come viene garantita l'integrità del pool di CA. Questa estensione ti consente di verificare i certificati emessi dal pool di CA e di vedere come vengono utilizzati i certificati.

Per ulteriori informazioni, consulta le Norme sui certificati.

Per specificare il criterio che definisce l'utilizzo dei certificati:

  1. (Facoltativo) Aggiungi l'identificatore dei criteri nel campo Identificatori dei criteri.
  2. Fai clic su Avanti.
Aggiungere server OCSP per l'accesso alle informazioni sull'autorità (AIA)

L'estensione AIA in un certificato fornisce le seguenti informazioni:

  • Indirizzo dei server OCSP da cui puoi controllare lo stato di revoca del certificato.
  • Il metodo di accesso dell'emittente del certificato.

Per ulteriori informazioni, consulta Accesso alle informazioni sulle autorità.

Per aggiungere i server OCSP visualizzati nel campo dell'estensione AIA nei certificati, procedi nel seguente modo. La seguente procedura è facoltativa.

  1. (Facoltativo) Fai clic su Aggiungi elemento.
  2. Nel campo URL server, aggiungi l'URL del server OCSP.
  3. Fai clic su Fine.
  4. Fai clic su Avanti.
Configura estensioni aggiuntive

Per configurare estensioni personalizzate aggiuntive da includere nei certificati emessi dal pool di CA, segui questi passaggi. La seguente procedura è facoltativa.

  1. Fai clic su Aggiungi elemento.
  2. Nel campo Identificatore oggetto, aggiungi un identificatore di oggetto valido formattato come cifre separate da punti.
  3. Nel campo Valore, aggiungi il valore con codifica Base64 per l'identificatore.
  4. Se l'estensione è critica, seleziona L'estensione è critica.

Per salvare tutte le configurazioni dei valori di riferimento, fai clic su Fine.

Configurare i vincoli delle estensioni

Per impedire l'inclusione di tutte le estensioni delle richieste di certificati nei certificati emessi, fai clic sul pulsante di attivazione/disattivazione.

Dopo aver fatto clic sul pulsante di attivazione/disattivazione, vedrai il campo Estensioni dei certificati note che puoi utilizzare per selezionare le estensioni dei certificati. Per selezionare le estensioni del certificato, segui questi passaggi:

  1. (Facoltativo) Fai clic sul campo Estensioni certificati note e cancella le estensioni non richieste dal menu.
  2. (Facoltativo) Nel campo Estensioni personalizzate, aggiungi gli identificatori degli oggetti per le estensioni che vuoi includere nei certificati emessi dal pool di CA.
Configura vincoli di identità

Per configurare i vincoli sull'oggetto e sulle SAN nei certificati emessi dal pool di CA, segui questi passaggi:

  1. (Facoltativo) Per impedire il trasferimento dell'oggetto nelle richieste di certificato, fai clic sul pulsante di attivazione/disattivazione.
  2. (Facoltativo) Per impedire il trasferimento dei nomi alternativi degli oggetti nelle richieste di certificati, fai clic sul pulsante di attivazione/disattivazione.
  3. (Facoltativo) Aggiungi un'espressione CEL (Common Expression Language) per applicare limitazioni agli oggetti dei certificati. Per maggiori informazioni, consulta la sezione sull'utilizzo di CEL.
  4. Fai clic su Avanti.

Per scoprire come configurare parametri aggiuntivi nei criteri di emissione dei certificati, consulta IssuancePolicy.

Per creare il pool di CA, fai clic su Fine.

gcloud

Esegui questo comando:

gcloud privateca pools create POOL_NAME

Sostituisci POOL_NAME con il nome del pool di CA.

Se non specifichi il livello richiesto per il pool di CA, per impostazione predefinita viene selezionato il livello Enterprise. Se vuoi specificare il livello per il pool di CA, esegui questo comando gcloud:

gcloud privateca pools create POOL_NAME --tier=TIER_NAME

Sostituisci quanto segue:

Se non specifichi il formato di codifica di pubblicazione per il pool di CA, per impostazione predefinita viene selezionato il formato di codifica di pubblicazione PEM. Se vuoi specificare il formato di codifica di pubblicazione per il pool di CA, esegui questo comando gcloud:

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

Sostituisci quanto segue:

  • POOL_NAME: il nome del pool di CA.
  • PUBLISHING_ENCODING_FORMAT: PEM o DER.

Per maggiori informazioni sul comando gcloud privateca pools create, consulta gcloud privateca pool create.

Per informazioni sul posizionamento di limitazioni per il tipo di certificati che un pool di CA può emettere, consulta Aggiungere un criterio di emissione dei certificati a un pool di CA.

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

Per eseguire l'autenticazione con CA Service, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per eseguire l'autenticazione con CA Service, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Per eseguire l'autenticazione con CA Service, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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. Crea un pool di CA.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
    "tier": "ENTERPRISE"
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

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

  2. Fai un sondaggio sull'operazione fino al suo completamento.

    L'operazione viene completata quando la proprietà done dell'operazione a lunga esecuzione è impostata su true.

    Metodo HTTP e URL:

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

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

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

Aggiungi o aggiorna le etichette su un pool di CA

Un'etichetta è una coppia chiave-valore che consente di organizzare le risorse del servizio CA. Puoi filtrare le risorse in base alle loro etichette.

Per aggiungere o aggiornare le etichette in un pool di CA, segui questi passaggi:

Console

Per aggiungere un'etichetta:

  1. Vai alla pagina Certificate Authority Service.

    Vai a Certificate Authority Service

  2. Nella scheda Gestore del pool di CA, seleziona il pool di CA.

  3. Fai clic su Etichette.

  4. Fai clic su Aggiungi etichetta.

  5. Aggiungi una coppia chiave-valore.

  6. Fai clic su Salva.

    Aggiungi un&#39;etichetta a un pool di CA esistente.

Per modificare un'etichetta esistente:

  1. Vai alla pagina Certificate Authority Service.

    Vai a Certificate Authority Service

  2. Nella scheda Gestore del pool di CA, seleziona il pool di CA.

  3. Fai clic su Etichette.

  4. Modifica il valore dell'etichetta.

  5. Fai clic su Salva.

gcloud

Esegui questo comando:

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

Sostituisci POOL_ID con il nome del pool di CA.

Passaggi successivi