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 maggiore di query al secondo (QPS) efficaci.

Devi creare un pool di CA prima di poter utilizzare Certificate Authority Service per creare una 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 su come concedere un ruolo IAM a un principale, 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 quali impostare.

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 posizione Google Cloud. Ti consigliamo di creare il pool 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 influisce sulla persistenza dei certificati creati dal servizio CA, sulla possibilità di revocare in un secondo momento i certificati creati e sulla frequenza massima con cui puoi creare certificati dalle CA nel pool di CA. Per ulteriori informazioni, vedi 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 impone limitazioni ai certificati che le CA nel pool di CA sono autorizzate a emettere. Puoi aggiornare il criterio di emissione di un pool di CA dopo averlo creato. Per ulteriori informazioni, 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 pubblicare i certificati CA per ciascuna delle sue CA. Quando viene emesso un certificato, l'URL di questo certificato CA è incluso nel 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, un URL a questo CRL viene incluso nel come estensione Punto di distribuzione dell'elenco revoche certificati (CRL). Non riesci a trovare l'elenco revoche certificati senza l'estensione CDP nel certificato. Per ulteriori informazioni, consulta la pagina Revocare i certificati.

Puoi anche selezionare il formato di codifica dei certificati CA e delle liste di revoca 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 CA utilizzando Google Cloud CLI o la console Google Cloud, il servizio CA abilita queste opzioni di pubblicazione per impostazione predefinita. Per maggiori informazioni, consulta Disattivare la pubblicazione del certificato CA e dell'elenco revoche certificati 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 una regione dal menu a discesa nel campo Regione. Per ulteriori informazioni, consulta Scegliere la posizione migliore.

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

  7. Fai clic su Avanti.

Configurare le dimensioni e gli algoritmi delle chiavi consentiti

Il servizio CA 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, svolgi quanto segue. Questa è una procedura facoltativa.

  1. Fai clic sul pulsante di attivazione/disattivazione.
  2. Fai clic su Aggiungi un articolo.
  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 le 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 non consentire 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 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 le CRL pubblicati.

    Configura le opzioni di pubblicazione per i certificati CA e le 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, svolgi quanto segue:

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

Puoi utilizzare questa impostazione per configurare i modi in cui la chiave contenuta nel certificato può essere utilizzata. Le opzioni per l'utilizzo della chiave includono la crittografia della chiave, la crittografia dei dati, la firma del certificato, la firma della CRL e altro ancora.

Per ulteriori informazioni, vedi Utilizzo delle chiavi.

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 delle chiavi di base per i certificati.
  2. Seleziona le caselle di controllo per i modi in cui vuoi che venga utilizzata una chiave.
  3. Seleziona i modi generali in cui vuoi che venga utilizzata una chiave.
  4. Fai clic su Avanti.
Definire l'utilizzo esteso della chiave

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

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

Per ulteriori informazioni, consulta Uso esteso della chiave.

Per definire gli utilizzi avanzati 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. Fai clic su Avanti.
Definire gli identificatori delle norme

L'estensione dei criteri del certificato nel certificato esprime i criteri followed dal pool di CA emittente. Questa estensione può includere informazioni su come vengono convalidate le identità prima dell'emissione dei certificati, 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 ulteriori informazioni, consulta le norme relative ai certificati.

Per specificare il criterio che definisce l'utilizzo del certificato, procedi nel seguente modo:

  1. (Facoltativo) Aggiungi l'identificatore delle norme nel campo Identificatori norme.
  2. Fai clic su Avanti.
Aggiungi i 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 sulle autorità.

Per aggiungere i server OCSP visualizzati nel campo dell'estensione AIA nei certificati: La procedura che segue è 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. 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. La procedura riportata di seguito è facoltativa.

  1. Fai clic su Aggiungi elemento.
  2. Nel campo Identificatore dell'oggetto, aggiungi un identificatore dell'oggetto valido, formato come cifre separate da punti.
  3. Nel campo Value (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 di riferimento, fai clic su Fine.

Configurare i vincoli delle estensioni

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

Dopo aver fatto clic sul pulsante di attivazione/disattivazione, viene visualizzato il campo Estensioni dei certificati noti che puoi utilizzare per selezionare le estensioni dei certificati. Per selezionare le estensioni del certificato:

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

Per configurare i vincoli sull'oggetto e sui SAN nei certificati emessi dal pool di CA, procedi nel seguente modo:

  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 certificato, fai clic sul pulsante di attivazione/disattivazione.
  3. (Facoltativo) Aggiungi un'espressione Common Expression Language (CEL) per applicare limitazioni agli oggetti dei certificati. Per ulteriori informazioni, consulta Utilizzare CEL.
  4. Fai clic su Avanti.

Per scoprire come configurare parametri aggiuntivi nel criterio 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 CA, per impostazione predefinita viene selezionato il livello Enterprise. Se vuoi specificare il livello per il pool di CA, esegui il seguente comando gcloud:

gcloud privateca pools create POOL_NAME --tier=TIER_NAME

Sostituisci quanto segue:

Se non specifichi il formato di codifica della pubblicazione per il pool di CA, per impostazione predefinita viene selezionato il formato PEM di codifica della pubblicazione. Se vuoi specificare il formato di codifica della pubblicazione per il tuo pool 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 ulteriori informazioni sul comando gcloud privateca pools create, consulta gcloud privateca pools create.

Per informazioni su come applicare limitazioni al tipo di certificati che un pool di CA può emettere, consulta 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 autenticarti al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori 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 di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

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

  2. Effettua il polling dell'operazione fino al 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 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 relative 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.

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