Créer un pool d'autorités de certification

Cette page explique comment créer des pools d'autorités de certification (CA).

Un pool d'autorités de certification est une collection de plusieurs autorités de certification disposant d'une règle d'émission de certificats et d'une stratégie Identity and Access Management (IAM) communes. Un pool de CA facilite la gestion de la rotation des autorités de certification et vous permet d'obtenir un nombre plus élevé de requêtes efficaces par seconde (RPS).

Vous devez créer un pool d'autorités de certification avant de pouvoir utiliser le service Certificate Authority Service pour créer une autorité de certification. Pour en savoir plus, consultez la section Présentation des pools d'autorités de certification.

Avant de commencer

Assurez-vous de disposer du rôle IAM "Gestionnaire des opérations de service de l'autorité de certification" (roles/privateca.caManager). Pour savoir comment attribuer un rôle IAM à un principal, consultez la section Attribuer un rôle unique.

Définir les paramètres du pool d'autorités de certification

Cette section décrit les paramètres d'un pool d'autorités de certification et fournit des recommandations pour les définir.

Paramètres permanents du pool d'autorités de certification

Une fois le pool d'autorités de certification créé, vous ne pouvez plus modifier les paramètres suivants.

Emplacement

Spécifiez l'emplacement du pool d'autorités de certification. Un pool d'autorités de certification est stocké dans un seul emplacement Google Cloud. Nous vous recommandons de créer votre pool d'autorités de certification au même endroit ou à proximité de l'emplacement où vous prévoyez de l'utiliser.

Pour obtenir la liste complète des emplacements compatibles, consultez la section Emplacements.

Niveau

Indiquez si vous souhaitez créer le pool d'autorités de certification avec le niveau DevOps ou Enterprise. Ce choix détermine si le service d'autorité de certification conserve les certificats créés, si les certificats créés peuvent être révoqués ultérieurement et la fréquence maximale à laquelle vous pouvez créer des certificats à partir des autorités de certification du pool d'autorités de certification. Pour en savoir plus, consultez la section Sélectionner les niveaux d'opération.

Paramètres facultatifs du pool d'autorités de certification

Règle d'émission de certificat

Un pool d'autorités de certification peut avoir une règle d'émission de certificats. Cette règle d'émission impose des restrictions sur les certificats que les autorités de certification du pool d'autorités de certification sont autorisées à émettre. Vous pouvez mettre à jour la stratégie d'émission d'un pool d'autorités de certification après l'avoir créé. Pour en savoir plus, consultez la section Présentation des modèles et des règles d'émission.

Pour en savoir plus sur la configuration d'une stratégie d'émission de certificats, consultez la section Ajouter une stratégie d'émission de certificats à un pool d'autorités de certification.

Options de publication

Vous pouvez configurer un pool d'autorités de certification pour publier les certificats de chacune d'elles. Lors de l'émission d'un certificat, l'URL de ce certificat CA est incluse dans le certificat en tant qu'extension d'accès aux informations de l'autorité (AIA).

Les autorités de certification des pools d'autorités de certification de niveau Enterprise peuvent être autorisées à publier des listes de révocation de certificats (LRC) dans le bucket Cloud Storage associé. Lors de l'émission d'un certificat, une URL de cette liste est incluse dans le certificat en tant qu'extension du point de distribution de la liste de révocation de certificats (CDP). Vous ne pouvez pas trouver la LRC sans l'extension CDP dans le certificat. Pour en savoir plus, consultez la section Révoquer des certificats.

Vous pouvez également sélectionner le format d'encodage des certificats d'autorité de certification et des listes de révocation publiés. Les formats d'encodage acceptés sont PEM (Privacy Enhanced Mail) et DER (Distinguished Encoding Rules). Si aucun format d'encodage n'est spécifié, PEM est utilisé.

Si vous créez le pool de certificats d'autorité de certification à l'aide de la Google Cloud CLI ou de la console Google Cloud, le service CA active ces options de publication par défaut. Pour en savoir plus, consultez la section Désactiver la publication du certificat CA et de la liste de révocation de certificats pour les autorités de certification d'un pool d'autorités de certification.

Créer un pool d'autorités de certification

Pour créer un pool d'autorités de certification, suivez les instructions suivantes:

Console

Choisir un nom pour le pool d'autorités de certification

  1. Accédez à la page Certificate Authority Service (Service d'autorité de certification) dans la console Google Cloud.

    Accéder à Certificate Authority Service

  2. Cliquez sur Gestionnaire de pool d'autorités de certification.

  3. Cliquez sur Créer un pool.

  4. Attribuez un nom unique au pool d'autorités de certification pour la région.

  5. Sélectionnez une région dans le menu déroulant du champ Région. Pour en savoir plus, consultez la section Choisir le meilleur emplacement.

  6. Sélectionnez le niveau Enterprise ou DevOps. Pour en savoir plus, consultez la section Sélectionner les niveaux d'opération.

  7. Cliquez sur Suivant.

Configurer les algorithmes et tailles de clé autorisés

Le service CA vous permet de choisir les algorithmes de signature pour les clés Cloud KMS qui appuient les autorités de certification du pool d'autorités de certification. Tous les algorithmes de clé sont autorisés par défaut.

Pour limiter les clés autorisées dans les certificats émis par le pool d'autorités de certification, procédez comme suit. Cette procédure est facultative.

  1. Cliquez sur le bouton.
  2. Cliquez sur Ajouter un élément.
  3. Dans la liste Type, sélectionnez le type de clé.

    Si vous souhaitez utiliser des clés RSA, procédez comme suit:

    1. Facultatif: Ajoutez la taille minimale du module en bits.
    2. Facultatif: Ajoutez la taille maximale du module en bits.
    3. Cliquez sur OK.

    Si vous souhaitez utiliser des clés à courbe elliptique, procédez comme suit:

    1. Facultatif: Dans la liste Type de courbe elliptique, sélectionnez le type de courbe elliptique.
    2. Cliquez sur OK.
  4. Pour ajouter une autre clé autorisée, cliquez sur Ajouter un élément, puis répétez l'étape 2.

  5. Cliquez sur Suivant.

Configurer les méthodes de demande de certificat

Pour limiter les méthodes que les demandeurs de certificats peuvent utiliser pour demander des certificats au pool d'autorités de certification, procédez comme suit:

  1. Facultatif: Pour limiter les demandes de certificat basées sur les requêtes de signature de certificat, cliquez sur le bouton bascule.
  2. Facultatif: Pour limiter les demandes de certificat basées sur la configuration, cliquez sur le bouton bascule.

Configurer les options de publication

Pour configurer les options de publication, procédez comme suit:

  1. Facultatif: Pour interdire la publication des certificats CA dans le bucket Cloud Storage pour les autorités de certification du pool, cliquez sur le bouton bascule.
  2. Facultatif: Pour interdire la publication de LRC dans le bucket Cloud Storage pour les autorités de certification du pool d'autorités de certification, cliquez sur le bouton bascule.
  3. Cliquez sur le menu pour sélectionner le format d'encodage des certificats CA et des listes de révocation publiés.

    Configurez les options de publication des certificats CA et des listes de révocation de certificats pour les autorités de certification du pool.

  4. Cliquez sur Suivant.

Configurer les valeurs de référence

Pour configurer les valeurs de référence dans les certificats émis à partir du pool de CA, procédez comme suit:

  1. Cliquez sur le bouton.
  2. Cliquez sur Configurer les valeurs de référence.
Définir l'utilisation de base de la clé

Vous pouvez utiliser ce paramètre pour configurer les modes d'utilisation de la clé contenue dans le certificat. Les options d'utilisation de la clé incluent le chiffrement de clé, le chiffrement de données, la signature de certificat, la signature de LRC, etc.

Pour en savoir plus, consultez la section Utilisation des clés.

Pour définir les utilisations de base des clés, procédez comme suit:

  1. Facultatif: Dans la fenêtre qui s'affiche, cliquez sur le bouton bascule si vous souhaitez spécifier des utilisations de clé de base pour les certificats.
  2. Cochez les cases correspondant aux utilisations que vous souhaitez attribuer à une clé.
  3. Sélectionnez les utilisations générales que vous souhaitez attribuer à une clé.
  4. Cliquez sur Suivant.
Définir l'utilisation étendue de la clé

Vous pouvez utiliser ce paramètre pour sélectionner des scénarios plus précis pour lesquels la clé contenue dans le certificat peut être utilisée. Les options incluent l'authentification du serveur, l'authentification du client, la signature de code, la protection des e-mails, etc.

Les utilisations étendues des clés sont définies à l'aide d'identifiants d'objet (OID). Si vous ne configurez pas les utilisations étendues des clés, tous les scénarios d'utilisation des clés sont autorisés.

Pour en savoir plus, consultez la section Utilisation étendue des clés.

Pour définir les utilisations améliorées de la clé, procédez comme suit:

  1. Facultatif: Pour spécifier les utilisations étendues des clés pour les certificats émis par le pool d'autorités de certification, cliquez sur le bouton bascule.
  2. Cochez les cases correspondant aux scénarios d'utilisation améliorée de la clé.
  3. Cliquez sur Suivant.
Définir des identifiants de règle

L'extension des règles de certificat du certificat indique les règles suivies par le pool d'autorités de certification émettrices. Cette extension peut inclure des informations sur la façon dont les identités sont validées avant l'émission de certificats, la révocation des certificats et l'intégrité du pool d'autorités de certification. Cette extension vous aide à vérifier les certificats émis par le pool d'autorités de certification et à voir comment ils sont utilisés.

Pour en savoir plus, consultez la section Règles de certification.

Pour spécifier la règle qui définit l'utilisation du certificat, procédez comme suit:

  1. Facultatif: ajoutez l'identifiant de la règle dans le champ Identifiants de règle.
  2. Cliquez sur Suivant.
Ajouter des serveurs OCSP AIA (Authority Information Access)

L'extension AIA d'un certificat fournit les informations suivantes:

  • Adresse des serveurs OCSP à partir desquels vous pouvez vérifier l'état de révocation du certificat.
  • Méthode d'accès de l'émetteur du certificat.

Pour en savoir plus, consultez la section Accès aux informations sur les autorités.

Pour ajouter les serveurs OCSP qui apparaissent dans le champ d'extension AIA des certificats, procédez comme suit. La procédure suivante est facultative.

  1. Facultatif: cliquez sur Ajouter un élément.
  2. Dans le champ Server URL (URL du serveur), ajoutez l'URL du serveur OCSP.
  3. Cliquez sur OK.
  4. Cliquez sur Suivant.
Configurer des extensions supplémentaires

Pour configurer des extensions personnalisées supplémentaires à inclure dans les certificats émis par le pool d'autorités de certification, procédez comme suit. La procédure suivante est facultative.

  1. Cliquez sur Ajouter un élément.
  2. Dans le champ Identifiant de l'objet, ajoutez un identifiant d'objet valide au format numérique séparé par des points.
  3. Dans le champ Valeur, ajoutez la valeur de l'identifiant encodée en base64.
  4. Si l'extension est essentielle, sélectionnez Extension is critical (L'extension est essentielle).

Pour enregistrer toutes les configurations de valeurs de référence, cliquez sur OK.

Configurer des contraintes d'extension

Pour empêcher l'inclusion de toutes les extensions des demandes de certificat dans les certificats émis, cliquez sur le bouton bascule.

Après avoir cliqué sur le bouton d'activation, le champ Extensions de certificat connues s'affiche. Vous pouvez l'utiliser pour sélectionner les extensions de certificat. Pour sélectionner les extensions de certificat, procédez comme suit:

  1. Facultatif: cliquez sur le champ Extensions de certificat connues, puis supprimez les extensions non requises du menu.
  2. Facultatif: Dans le champ Extensions personnalisées, ajoutez les identifiants d'objet des extensions que vous souhaitez inclure dans les certificats émis par le pool d'autorités de certification.
Configurer des contraintes d'identité

Pour configurer des contraintes sur l'objet et les SAN dans les certificats émis par le pool d'autorités de certification, procédez comme suit:

  1. Facultatif: Pour empêcher la transmission de l'objet dans les demandes de certificat, cliquez sur le bouton bascule.
  2. Facultatif: Pour empêcher la transmission des autres noms d'objet dans les demandes de certificat, cliquez sur le bouton bascule.
  3. Facultatif: ajoutez une expression CEL (Common Expression Language) pour appliquer des restrictions aux objets de certificat. Pour en savoir plus, consultez la section Utiliser le langage CEL.
  4. Cliquez sur Suivant.

Pour découvrir comment configurer des paramètres supplémentaires dans la stratégie d'émission de certificats, consultez IssuancePolicy.

Pour créer le pool d'autorités de certification, cliquez sur OK.

gcloud

Exécutez la commande suivante :

gcloud privateca pools create POOL_NAME

Remplacez POOL_NAME par le nom du pool d'autorités de certification.

Si vous ne spécifiez pas le niveau requis pour votre pool d'autorités de certification, le niveau Enterprise est sélectionné par défaut. Si vous souhaitez spécifier le niveau de votre pool d'autorités de certification, exécutez la commande gcloud suivante:

gcloud privateca pools create POOL_NAME --tier=TIER_NAME

Remplacez les éléments suivants :

Si vous ne spécifiez pas le format d'encodage des publications pour votre pool de certificats d'autorité de certification, le format d'encodage des publications PEM est sélectionné par défaut. Si vous souhaitez spécifier le format d'encodage de publication pour votre pool d'autorités de certification, exécutez la commande gcloud suivante:

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

Remplacez les éléments suivants :

  • POOL_NAME: nom de votre pool d'autorités de certification.
  • PUBLISHING_ENCODING_FORMAT : PEM ou DER.

Pour en savoir plus sur la commande gcloud privateca pools create, consultez la page gcloud privateca pools create.

Pour en savoir plus sur l'ajout de restrictions au type de certificats qu'un pool d'autorités de certification peut émettre, consultez la section Ajouter une stratégie d'émission de certificats à un pool d'autorités de certification.

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

Pour vous authentifier auprès du service d'autorité de certification, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès du service d'autorité de certification, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès du service d'autorité de certification, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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. Créez un pool d'autorités de certification.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    {
    "tier": "ENTERPRISE"
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

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

  2. Interrogez l'opération jusqu'à ce qu'elle soit terminée.

    L'opération est terminée lorsque la propriété done de l'opération de longue durée est définie sur true.

    Méthode HTTP et URL :

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

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

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

Ajouter ou mettre à jour des libellés sur un pool d'autorités de certification

Un libellé est une paire clé-valeur qui vous aide à organiser vos ressources de service d'autorité de certification. Vous pouvez filtrer vos ressources en fonction de leurs libellés.

Pour ajouter ou mettre à jour des étiquettes sur un pool d'autorités de certification, procédez comme suit:

Console

Pour ajouter un libellé, procédez comme suit:

  1. Accédez à la page Certificate Authority Service.

    Accéder à Certificate Authority Service

  2. Dans l'onglet Gestionnaire de pool d'autorités de certification, sélectionnez le pool d'autorités de certification.

  3. Cliquez sur Libellés.

  4. Cliquez sur Ajouter un libellé.

  5. Ajoutez une paire clé-valeur.

  6. Cliquez sur Enregistrer.

    ajouter un libellé à un pool d&#39;autorités de certification existant ;

Pour modifier un libellé existant, procédez comme suit:

  1. Accédez à la page Certificate Authority Service.

    Accéder à Certificate Authority Service

  2. Dans l'onglet Gestionnaire de pool d'autorités de certification, sélectionnez le pool d'autorités de certification.

  3. Cliquez sur Libellés.

  4. Modifiez la valeur du libellé.

  5. Cliquez sur Enregistrer.

gcloud

Exécutez la commande suivante :

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

Remplacez POOL_ID par le nom du pool d'autorités de certification.

Étape suivante