Ajouter des règles d'émission de certificats

L'ajout de règles d'émission de certificats dans le service d'autorité de certification implique de définir des règles et des restrictions qui régissent les types de certificats émis par une autorité de certification (CA). Pour en savoir plus sur les règles d'émission de certificats, consultez la section À propos des règles d'émission de certificats.

Une règle d'émission de certificats vous permet de spécifier l'objet et les autres noms d'objet (SAN) pouvant être inclus dans les certificats émis. Vous pouvez spécifier la règle d'émission de certificats lorsque vous créez un pool d'autorités de certification ou mettre à jour un pool d'autorités de certification existant pour ajouter une règle d'émission.

Pour en savoir plus, consultez la section Présentation des modèles et des règles d'émission.

Avant de commencer

Vous pouvez ajouter une règle d'émission de certificats à un pool d'autorités de certification lorsque vous en créez un ou que vous mettez à jour un pool d'autorités de certification existant.

Pour ce faire, utilisez une des méthodes suivantes :

Console

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

  2. Sur la page Gestionnaire de pool d'autorités de certification, cliquez sur le nom du pool d'autorités de certification pour lequel vous souhaitez ajouter une règle d'émission de certificats.

  3. Sur la page Pool de CA, cliquez sur Modifier.

Définir l'utilisation de base de la clé

Ce paramètre fait référence au champ Key Usage d'un certificat numérique. Il spécifie comment la clé privée du certificat peut être utilisée, par exemple pour le chiffrement de clé, le chiffrement de données, la signature de certificats et la signature de listes de révocation de certificats. Pour en savoir plus, consultez la section Utilisation des clés.

  1. Pour sélectionner les utilisations de base des clés, cliquez sur l'option Spécifier l'utilisation de base des clés pour les certificats émis à partir de ce pool d'autorités de certification, puis sélectionnez l'une des options proposées.
  2. Cliquez sur Suivant.
Définir l'utilisation étendue de la clé

Ce paramètre fait référence au champ Extended Key Usage (EKU) d'un certificat numérique. Il fournit des restrictions plus spécifiques et plus précises sur l'utilisation de la clé, par exemple pour l'authentification du serveur, l'authentification du client, la signature de code et la protection des e-mails. Pour en savoir plus, consultez la section Extended key usage.

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.

  1. Pour sélectionner les utilisations étendues des clés, cliquez sur le bouton bascule Écrire les utilisations étendues des clés pour les certificats émis à partir de ce pool d'autorités de certification, puis sélectionnez l'une des options affichées.
  2. 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 concernant les certificats.

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

  1. Ajoutez l'identifiant de la règle dans le champ Identifiants de la 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:

  1. 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.
Options de l'autorité de certification

Le champ Options d'autorité de certification d'un modèle de certificat définit comment le certificat obtenu peut être utilisé dans une hiérarchie d'autorité de certification (AC). Les options d'autorité de certification déterminent si un certificat peut être utilisé pour signer d'autres certificats et, le cas échéant, les restrictions applicables aux certificats qu'elle émet.

parmi les options suivantes :

  1. Inclure les configurations pour décrire les extensions X.509 de l'autorité de certification: spécifiez les paramètres d'un modèle de certificat qui contrôlent les extensions X.509.

  2. Limiter l'utilisation des certificats émis aux autorités de certification: cette option n'apparaît que si vous cochez la case mentionnée à l'étape précédente. Cette valeur booléenne indique si le certificat est un certificat d'autorité de certification. Si la valeur est true, le certificat peut être utilisé pour signer d'autres certificats. Si la valeur est false, le certificat est un certificat d'entité finale et ne peut pas signer d'autres certificats. Si vous cliquez sur ce bouton, vous êtes invité à définir des contraintes de nom pour l'extension dans les certificats d'autorité de certification.

  3. Incluez les configurations pour décrire les extensions X.509 de restriction de longueur de chemin : spécifiez les paramètres qui contrôlent la longueur d'une chaîne de certificats, provenant d'un certificat particulier. Si la longueur maximale du chemin d'accès de l'émetteur est définie sur 0, l'autorité de certification ne peut émettre que des certificats d'entité de fin. Si elle est définie sur 1, la chaîne sous ce certificat CA ne peut inclure qu'une seule autorité de certification subordonnée. Si aucune valeur n'est déclarée, le nombre de CA subordonnées dans la chaîne sous cette autorité de certification est illimité.

  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 de CA, procédez comme suit:

  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.

gcloud

Pour utiliser la Google Cloud CLI afin d'ajouter une stratégie d'émission de certificats à un pool d'autorités de certification, vous devez créer un fichier YAML qui décrit les restrictions applicables aux certificats que le pool d'autorités de certification peut émettre. Le contenu correspond à un IssuancePolicy.

  1. À l'aide de l'éditeur Cloud Shell, créez un fichier policy.yaml avec le contenu suivant:

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: true
    

    Où :

    • Le champ allowSubjectPassthrough est obligatoire. Si le champ allowSubjectPassthrough est défini sur true, le champ Subject (objet) est copié à partir d'une requête de certificat dans le certificat signé. Sinon, l'objet demandé est supprimé.
    • Si le champ allowSubjectAltNamesPassthrough est défini sur true, l'extension SubjectAltNames est copiée à partir d'une demande de certificat dans le certificat signé. Sinon, les SubjectAltNames demandés sont supprimés.
  2. Pour mettre à jour la stratégie d'émission de certificats d'un pool d'autorités de certification à l'aide du fichier créé à l'étape précédente, exécutez la commande suivante:

    gcloud privateca pools update POOL_NAME --location LOCATION --issuance-policy FILE_PATH
    

    Remplacez les éléments suivants :

    • POOL_NAME: nom du pool d'autorités de certification.
    • LOCATION: emplacement du pool d'autorités de certification. Pour obtenir la liste complète des emplacements, consultez la section Emplacements.
    • FILE_PATH: chemin d'accès au fichier policy.yaml.

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

Restrictions compatibles

Certificate Authority Service accepte les restrictions de stratégie d'émission suivantes. Vous pouvez combiner les restrictions suivantes si nécessaire pour créer une stratégie d'émission de certificats personnalisée.

Limiter ou forcer les valeurs X.509 autorisées

Un pool d'autorités de certification peut limiter les valeurs X.509 autorisées dans les demandes de certificat en configurant le champ passthrough_extensions.

Un pool d'autorités de certification peut également spécifier explicitement des valeurs X.509 à ajouter à tous ses certificats émis, en écrasant les valeurs demandées, à l'aide du champ baseline_values.

Les valeurs baseline_values d'un pool de certificats d'autorité de certification permettent de spécifier les propriétés suivantes:

Vous pouvez également les utiliser conjointement.

Si vous modifiez une partie du champ baseline_values, la mise à jour remplace l'ensemble des valeurs du champ baseline_values.

  • Exemple: Limitez une autorité de certification à n'émettre que des certificats d'entité de fin avec des valeurs X.509 pour le protocole TLS mutuel (mTLS).

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
          keyEncipherment: true
        extendedKeyUsage:
           clientAuth: true
           serverAuth: true
    
  • Exemple: Limitez une autorité de certification à n'émettre que des certificats de signature de code d'entité finale avec une URL OCSP AIA de référence.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
        extendedKeyUsage:
          codeSigning: true
      aiaOcspServers:
        -   "http://foo.bar/revocation"
      additionalExtensions:
      -   objectId:
            objectIdPath:
              -   1
              -   2
              -   3
          critical: false
          value: "base64 encoded extension value"
    

Pour en savoir plus sur le profil de certificat pour mTLS d'entité finale, consultez la section mTLS d'entité finale.

Limiter les champs d'identité autorisés

Pour limiter l'identité des certificats émis via un pool d'autorités de certification, vous pouvez ajouter une expression [Common Expression Language (CEL)][4]{: .external} au champ identity_constraints de la stratégie d'émission. Les expressions CEL permettent d'appliquer des restrictions arbitraires sur le nom de domaine de l'objet (y compris le nom commun) et les SAN d'un certificat.

Pour en savoir plus sur l'utilisation d'une expression CEL pour restreindre l'objet et les SAN, consultez Utiliser CEL.

  • Exemple : Autorisez l'autorité de certification à n'émettre que des certificats correspondant à un sujet spécifié.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: false
      celExpression:
        expression: 'subject.organization == "Example LLC" && subject.country_code in ["US", "UK"]'
    

    Le champ celExpression est facultatif. Utilisez une expression CEL (Common Expression Language) pour valider l'objet X.509 et l'Autre nom de l'objet résolus avant la signature d'un certificat. Pour en savoir plus sur l'utilisation d'expressions CEL, consultez la section Utiliser CEL.

  • Exemple: n'autorisez que les SAN dont le nom DNS est us.google.org ou se termine par .google.com.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == DNS && (san.value == "us.google.org" || san.value.endsWith(".google.com")) )'
    
  • Exemple: n'autorisez que les SAN dont les URI sont https://google.com/webhp ou commencent par spiffe://example-trust-domain-1/ns/namespace1/sa/.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == URI && (san.value == "https://google.com/webhp" || san.value.startsWith("spiffe://example-trust-domain-1/ns/namespace1/sa/")) )'
    
  • Exemple: Autorisez uniquement les SAN dont les adresses e-mail sont example@google.com ou se terminent par @google.org.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == EMAIL && (san.value == "example@google.com" || san.value.endsWith("@google.org")) )'
    
  • Exemple: Autorisez uniquement les SAN personnalisés disposant d'un OID spécifique et d'une valeur personnalisée.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == CUSTOM && san.oid == [1, 2, 3, 4] && san.value == "custom-data" )'
    

Limiter la durée de vie maximale des certificats émis

Pour limiter la durée de vie des certificats émis, utilisez le champ maximum_lifetime. Si la durée de vie demandée d'un certificat est supérieure à la durée de vie maximale, la durée de vie du certificat est tronquée explicitement.

Exemple

Pour autoriser une durée de vie maximale de 30 jours, utilisez le fichier policy.yaml suivant:

policy.yaml

maximumLifetime: 2592000s

Limiter les modes d'émission de certificats autorisés

Vous pouvez demander un certificat via une requête de signature de certificat (CSR) ou une description intégrée des valeurs demandées. Certaines organisations peuvent préférer ajouter des limites à l'option pouvant être utilisée, car cette dernière méthode ne nécessite pas de preuve de possession de la clé privée associée. Vous pouvez définir ces limites à l'aide du champ allowedIssuanceModes.

Pour en savoir plus sur la spécification des méthodes de demande de certificats auprès d'un pool d'autorités de certification, consultez la section IssuanceModes.

Pour en savoir plus sur la demande de certificats, consultez Créer une requête de certificat.

  • Exemple: n'autorisez que l'émission de CSR.

policy.yaml

allowedIssuanceModes:
  allowCsrBasedIssuance: True
  allowConfigBasedIssuance: False

Limiter les algorithmes de clé publique de la demande de certificat

Pour limiter la longueur minimale de clé et les algorithmes de clé publique que les certificats peuvent utiliser, vous pouvez utiliser le champ allowedKeyTypes dans le fichier YAML de la stratégie d'émission de certificats. Si ce champ est spécifié, la clé publique de la demande de certificat doit correspondre à l'un des types de clés listés dans le fichier YAML. Si ce champ n'est pas spécifié, vous pouvez utiliser n'importe quelle clé, à l'exception des clés RSA dont la taille de module est inférieure à 2 048 bits. Si vous souhaitez utiliser une clé RSA dont la taille de module est inférieure à 2 048 bits, vous devez l'autoriser explicitement à l'aide de la stratégie d'émission de certificats.

Exemple: Autorisez les clés RSA dont la taille de module est comprise entre 3 072 bits et 4 096 bits (inclus), ou les clés ECDSA (Elliptic Curve Digital Signature Algorithm) sur la courbe P-256 du NIST.

policy.yaml

allowedKeyTypes:
-   rsa:
  minModulusSize: 3072
  maxModulusSize: 4096
-   ellipticCurve:
      signatureAlgorithm: ECDSA_P256

Vous pouvez choisir l'un des algorithmes de signature par courbe elliptique suivants:

  • EC_SIGNATURE_ALGORITHM_UNSPECIFIED : n'importe quel algorithme de signature peut être utilisé.
  • ECDSA_P256 : signature numérique à courbe elliptique sur la courbe NIST P-256.
  • ECDSA_P384 : signature numérique à courbe elliptique sur la courbe P-384 du NIST.
  • EDDSA_25519 : algorithme de signature numérique à courbe d'Edwards sur la courbe 25519, comme décrit dans la RFC 8410.

Étape suivante