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

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

Prima di iniziare

Assicurati di disporre del ruolo IAM Responsabile operativo servizio CA (roles/privateca.caManager). Per informazioni sulla concessione di 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 consigli per decidere le impostazioni.

Impostazioni permanenti del pool di CA

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

Località
Specifica la posizione del pool di CA. Un pool di CA viene archiviato in un'unica Google Cloud posizione. 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, vedi Località.
Livello
Scegli se creare il pool di CA con il livello DevOps o Enterprise. Questa scelta influisce sulla persistenza dei certificati creati da CA Service, sulla possibilità di revocare i certificati creati in un secondo momento e sulla velocità massima con cui puoi creare certificati dalle CA nel pool di CA. Per saperne di più, vedi Selezionare i livelli di operazioni.

Impostazioni facoltative del pool di CA

Norme di emissione dei certificati

Un pool di CA può avere una policy di emissione dei certificati. Queste norme di emissione impongono restrizioni ai certificati che le CA nel pool di CA sono autorizzate a emettere. Puoi aggiornare la policy di emissione di un pool di CA dopo averlo creato. Per saperne di più, consulta Panoramica dei modelli e delle norme di emissione.

Per saperne di più sulla configurazione di una policy di emissione dei certificati, consulta la pagina Aggiungere una policy di emissione dei certificati a un pool di CA.

Opzioni di pubblicazione

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

Le CA nei pool di CA di livello Enterprise possono essere autorizzate a pubblicare elenchi di revoche dei certificati (CRL) nel bucket Cloud Storage associato. Quando viene emesso un certificato, viene incluso un URL a questo CRL nel certificato come estensione del punto di distribuzione dell'elenco revoche certificati (CDP). Non riesci a trovare la CRL senza l'estensione CDP nel certificato. Per maggiori informazioni, vedi Revocare i certificati.

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

Se crei il pool di CA utilizzando Google Cloud CLI o la console Google Cloud , CA Service attiva queste opzioni di pubblicazione per impostazione predefinita. Per saperne di più, consulta Disattivare 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

Scegliere 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 per il pool di CA univoco per la regione.

  5. Seleziona una regione dal menu a discesa nel campo Regione. Per saperne di più, vedi Scegliere la posizione migliore.

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

  7. Fai clic su Avanti.

Configurare le dimensioni e gli algoritmi delle chiavi consentiti

CA Service ti consente di scegliere gli algoritmi di firma per le chiavi Cloud KMS che supportano le CA nel pool di CA. Per impostazione predefinita, sono consentiti tutti gli algoritmi delle chiavi.

Per limitare le chiavi consentite nei certificati emessi dal pool di CA, procedi nel seguente modo. Questa è una procedura facoltativa.

  1. Fai clic sul pulsante.
  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 chiavi a 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. Fai clic su Avanti.

Configurare i metodi di richiesta dei certificati

Per applicare limitazioni ai metodi che i richiedenti di certificati possono utilizzare per richiedere certificati dal pool di CA, procedi nel seguente modo:

  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 impedire la pubblicazione dei certificati CA nel bucket Cloud Storage per le CA nel pool di CA, fai clic sul pulsante di attivazione/disattivazione.
  2. (Facoltativo) Per impedire 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 gli elenchi CRL pubblicati.

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

  4. Fai clic su Avanti.

Definisci l'utilizzo di base della chiave

Questa impostazione si riferisce al campo Key Usage all'interno di un certificato digitale. Specifica come può essere utilizzata la chiave privata del certificato, ad esempio per la crittografia della chiave, la crittografia dei dati, la firma del certificato e la firma CRL. Per saperne di più, vedi Utilizzo delle chiavi.

  1. Per selezionare gli utilizzi di base della chiave, fai clic sul pulsante di attivazione/disattivazione Specifica gli utilizzi di base della chiave per i certificati emessi da questo pool di CA, quindi seleziona una delle opzioni elencate.
  2. Fai clic su Avanti.
Definisci l'utilizzo esteso della chiave

Questa impostazione si riferisce al campo Extended Key Usage (EKU) di un certificato digitale. Fornisce restrizioni più specifiche e raffinate su come la chiave può essere utilizzata, ad esempio per l'autenticazione del server, l'autenticazione del client, la firma del codice e la protezione email. Per maggiori informazioni, vedi Utilizzo esteso della chiave.

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

  1. Per selezionare gli utilizzi estesi della chiave, fai clic sul pulsante di attivazione/disattivazione Scrivi gli utilizzi estesi della chiave per i certificati emessi da questo pool di CA, quindi seleziona una delle opzioni elencate.
  2. Fai clic su Avanti.
Definisci gli identificatori delle policy

L'estensione delle norme sui certificati nel certificato esprime le norme che segue il pool di CA emittente. Questa estensione può includere informazioni su come vengono convalidate le identità prima dell'emissione del certificato, su come vengono revocati i certificati e su come viene garantita l'integrità del pool di CA. Questa estensione ti aiuta a verificare i certificati emessi dal pool di CA e a vedere come vengono utilizzati.

Per saperne di più, consulta le norme relative ai certificati.

Per specificare la policy che definisce l'utilizzo del certificato:

  1. Aggiungi l'identificatore della norma nel campo Identificatori delle norme.
  2. Fai clic su Avanti.
Aggiungi 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 per l'emittente del certificato.

Per ulteriori informazioni, vedi Accesso alle informazioni dell'autorità.

Per aggiungere i server OCSP visualizzati nel campo dell'estensione AIA nei certificati:

  1. 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.
Opzioni CA

Il campo Opzioni CA all'interno di un modello di certificato definisce come il certificato risultante può essere utilizzato in una gerarchia di autorità di certificazione (CA). Le opzioni CA determinano se un certificato può essere utilizzato per firmare altri certificati e, in caso affermativo, le limitazioni dei certificati che emette.

Scegli una delle seguenti opzioni:

  1. Includi le configurazioni per descrivere le estensioni X.509 della CA: specifica le impostazioni all'interno di un modello di certificato che controllano le estensioni X.509.

  2. Limita i certificati emessi in modo che vengano utilizzati solo per le CA: questa opzione viene visualizzata solo se selezioni la casella di controllo menzionata nel passaggio precedente. Questo valore booleano indica se il certificato è un certificato CA. Se impostato su true, il certificato può essere utilizzato per firmare altri certificati. Se false, il certificato è un certificato end-entity e non può firmare altri certificati. Se fai clic su questo pulsante di attivazione/disattivazione, ti viene chiesto di definire i vincoli relativi ai nomi per l'estensione nei certificati CA.

  3. Includi le configurazioni per descrivere le limitazioni della lunghezza del percorso per le estensioni X.509: Specifica le impostazioni che controllano la lunghezza di una catena di certificati, a partire da un determinato certificato. Se la lunghezza massima del percorso dell'emittente è impostata su 0, la CA può emettere solo certificati dell'entità finale. Se è impostato su 1, la catena sotto questo certificato CA può includere una sola CA subordinata. Se un valore non viene dichiarato, il numero di CA subordinate nella catena sotto questa CA è illimitato.

  4. Fai clic su Avanti.
Configurare estensioni aggiuntive

Per configurare estensioni personalizzate aggiuntive da includere nei certificati emessi dal pool di CA, procedi nel seguente modo:

  1. Fai clic su Aggiungi elemento.
  2. Nel campo Identificatore oggetto, aggiungi un identificatore 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 è fondamentale.

Per salvare tutte le configurazioni dei valori della base 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 --location=LOCATION

Sostituisci quanto segue:

  • POOL_NAME: il nome del pool di CA.
  • LOCATION: la località in cui vuoi creare il pool di CA. Per l'elenco completo delle località, consulta Località.

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 pool di CA, esegui il seguente comando gcloud:

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

Sostituisci quanto segue:

  • POOL_NAME: il nome del pool di CA.
  • LOCATION: la località in cui vuoi creare il pool di CA. Per l'elenco completo delle località, consulta Località.
  • TIER_NAME: devops o enterprise. Per saperne di più, vedi Selezionare i livelli di operazioni.

Se non specifichi il formato di codifica di pubblicazione per il tuo pool di CA, viene selezionato per impostazione predefinita 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 --location=LOCATION --publishing-encoding-format=PUBLISHING_ENCODING_FORMAT

Sostituisci quanto segue:

  • POOL_NAME: il nome del pool di CA.
  • LOCATION: la località in cui vuoi creare il pool di CA. Per l'elenco completo delle località, consulta Località.
  • PUBLISHING_ENCODING_FORMAT: PEM o DER.

Per saperne di più sul comando gcloud privateca pools create, consulta gcloud privateca pools create.

Per informazioni su come imporre limitazioni al tipo di certificati che un pool di CA può emettere, vedi Aggiungere una policy 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"
  }
}

Vai

Per eseguire l'autenticazione al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 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 il polling dell'operazione finché non viene completata.

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

Aggiungere o aggiornare le etichette in un pool di CA

Un'etichetta è una coppia chiave-valore che ti aiuta a organizzare le risorse del servizio CA. Puoi filtrare le risorse in base alle etichette.

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

Console

Per aggiungere un'etichetta:

  1. Vai alla pagina Certificate Authority Service.

    Vai a Certificate Authority Service

  2. Nella scheda Gestore 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.

    Aggiungere 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 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 --location=LOCATION --update-labels foo=bar

Sostituisci quanto segue:

  • POOL_ID: il nome del pool di CA.
  • LOCATION: la posizione del pool di CA. Per l'elenco completo delle località, consulta Località.

Passaggi successivi