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 di certificati comune e un criterio IAM (Identity and Access Management). Un pool di CA semplifica la gestione della rotazione delle CA e consente di ottenere un numero maggiore di query effettive totali al secondo (QPS).

Prima di poter utilizzare Certificate Authority Service per creare una CA, devi creare un pool di CA. Per saperne di più, consulta la panoramica dei pool di CA.

Prima di iniziare

Assicurati di disporre del ruolo IAM Responsabile operazioni servizio CA (roles/privateca.caManager). Per informazioni su come concedere un ruolo 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 scegliere le impostazioni.

Impostazioni del pool di CA permanenti

Le seguenti impostazioni del pool di CA non possono essere modificate dopo aver creato il pool di CA.

Località

Specifica la località del pool di CA. Un pool di CA è archiviato in una singola località Google Cloud. Ti consigliamo di creare il pool di CA nella stessa località o nelle vicinanze della località in cui intendi utilizzarlo.

Per l'elenco completo delle località supportate, vedi Località.

Livello

Scegli se creare il pool di CA con il livello DevOps o Enterprise. Questa scelta determina se il servizio CA conserva i certificati creati, se quelli creati possono essere revocati in un secondo momento e la frequenza massima con cui è possibile creare certificati dalle CA nel pool di CA. Per saperne di più, consulta Selezionare i livelli operativi.

Impostazioni facoltative del pool di CA

Criterio di emissione dei certificati

Un pool di CA può avere un criterio di emissione dei certificati. Questo criterio di emissione pone limitazioni ai certificati che le CA del pool di CA sono autorizzati 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 di certificati a un pool di CA.

Opzioni di pubblicazione

Puoi configurare un pool di CA per pubblicare i certificati CA per ciascuna delle relative CA. Quando si rilascia un certificato, l'URL di questo certificato CA viene incluso nel certificato come estensione di accesso alle informazioni sull'autorità (AIA).

Le CA nei pool di CA di livello Enterprise possono pubblicare elenchi di revoca dei certificati (CRL) nel bucket Cloud Storage associato. Quando emetti un certificato, l'URL di questo CRL è incluso nel certificato come estensione del punto di distribuzione (CDP) del CRL. Non puoi trovare il CRL 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 dei CRL pubblicati. I formati di codifica supportati sono Privacy Ottimizzata Mail (PEM) e DN (Distinguited Encoding Rules). Se non viene specificato un formato di codifica, viene 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 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 le istruzioni riportate di seguito:

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

  3. Fai clic su Crea pool.

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

  5. Seleziona un'area geografica dal menu a discesa nel campo Regione. Per scoprire di più, consulta l'articolo Scegliere la località migliore.

  6. Seleziona il livello Enterprise o DevOps. Per saperne di più, consulta Selezionare i livelli operativi.

  7. Tocca Avanti.

Configurare gli algoritmi e le dimensioni delle chiavi consentiti

CA Service consente di scegliere gli algoritmi di firma per le chiavi Cloud KMS che supportano le CA nel pool di CA. Tutti gli algoritmi chiave sono consentiti per impostazione predefinita.

Per limitare le chiavi consentite nei certificati emessi dal pool di CA: Si tratta di 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:

    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 i tasti a forma di curva ellittica:

    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. Tocca Avanti.

Configurare i metodi di richiesta dei certificati

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

  1. (Facoltativo) Per limitare le richieste di certificati basate 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 dei 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 pubblicati e i CRL.

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

  4. Tocca Avanti.

Configura i vincoli di identità

Per configurare 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 dei soggetti 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 Utilizzo di CEL.
  4. Tocca Avanti.
Configura i vincoli delle estensioni

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

Dopo aver fatto clic sull'opzione di attivazione/disattivazione, viene visualizzato il campo Estensioni di certificato note che puoi utilizzare per selezionare le estensioni di certificato. Per selezionare le estensioni di certificato:

  1. (Facoltativo) Fai clic sul campo Estensioni certificato 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 i valori di riferimento

Per configurare i valori di riferimento nei certificati emessi dal pool di CA:

  1. Fai clic sul pulsante di attivazione/disattivazione.
  2. Fai clic su Configura i valori 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 della chiave, crittografia dei dati, firma dei certificati, firma dei CRL e altro ancora.

Per ulteriori informazioni, consulta la sezione Utilizzo della chiave.

Per definire gli utilizzi di base della chiave:

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

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

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

Per maggiori informazioni, vedi Utilizzo esteso della chiave.

Per definire gli utilizzi estesi della chiave:

  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 della chiave.
  3. Tocca Avanti.
Definisci 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 le identità vengono convalidate prima dell'emissione dei certificati, sulle modalità di revoca dei certificati e su come viene garantita l'integrità del pool di CA. Questa estensione ti consente di verificare i certificati emessi dal pool di CA e vedere come vengono utilizzati.

Per ulteriori informazioni, vedi Criteri relativi ai certificati.

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

  1. (Facoltativo) Aggiungi l'identificatore dei criteri nel campo Identificatori dei criteri.
  2. Tocca 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 è possibile controllare lo stato di revoca del certificato.
  • Il metodo di accesso dell'emittente del certificato.

Per saperne di più, vedi Accesso alle informazioni sulle autorità.

Per aggiungere i server OCSP visualizzati nel campo dell'estensione AIA dei certificati: La seguente procedura è facoltativa.

  1. (Facoltativo) Fai clic su Aggiungi elemento.
  2. Nel campo Server URL (URL server), aggiungi l'URL del server OCSP.
  3. Fai clic su Fine.
  4. Tocca 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 è fondamentale, seleziona L'estensione è critica.

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

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, viene selezionato il livello Enterprise per impostazione predefinita. Se vuoi specificare il livello per il tuo pool di CA, esegui il comando gcloud seguente:

gcloud privateca pools create POOL_NAME --tier=TIER_NAME

Sostituisci quanto segue:

Se non specifichi il formato di codifica di pubblicazione per il tuo 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 tuo pool di CA, esegui il seguente 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 su come applicare limitazioni ai tipi di certificati che un pool di CA può emettere, consulta Aggiungere un criterio di emissione di 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 a CA Service, configura 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 a CA Service, configura 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 a CA Service, configura 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. Creare 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 di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

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

  2. Esegui un sondaggio finché non viene completato.

    L'operazione è 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 di queste 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 di CA Service. Puoi filtrare le risorse in base alle relative etichette.

Per aggiungere o aggiornare le etichette su un pool di CA:

Console

Per aggiungere un'etichetta:

  1. Vai alla pagina Certificate Authority Service (Servizio di autorità di certificazione).

    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'etichetta a un pool di CA esistente.

Per modificare un'etichetta esistente:

  1. Vai alla pagina Certificate Authority Service (Servizio di autorità di certificazione).

    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