Ajouter des règles d'émission de certificat
L'ajout de règles d'émission de certificats dans CA Service 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 À propos des règles d'émission de certificats.
Une règle d'émission de certificats vous permet de spécifier les noms d'objet et les autres noms d'objet (SAN) qui peuvent ê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. Vous pouvez également mettre à jour un pool d'autorités de certification existant pour ajouter une règle d'émission.
Pour en savoir plus, consultez Présentation des modèles et des règles d'émission.
Avant de commencer
Assurez-vous de disposer du rôle IAM Responsable des opérations du service CA (
roles/privateca.caManager
) ou Administrateur du service CA (roles/privateca.admin
). Pour savoir comment accorder un rôle IAM à un compte principal, consultez Attribuer un seul rôle.
Vous pouvez ajouter une règle d'émission de certificats à un pool d'autorités de certification lors de la création d'un pool d'autorités de certification ou lors de la mise à jour d'un pool d'autorités de certification existant.
Pour ce faire, utilisez une des méthodes suivantes :
Console
Accédez à la page Certificate Authority Service dans la consoleGoogle Cloud . Accéder à Certificate Authority Service
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.
Sur la page Pool de CA, cliquez sur
Modifier.
Ce paramètre fait référence au champ Key Usage
d'un certificat numérique. Elle 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 certificat et la signature de LCR.
Pour en savoir plus, consultez Utilisation des clés.
- Pour sélectionner les utilisations de base des clés, cliquez sur le bouton à bascule Spécifier l'utilisation de base des clés pour les certificats émis à partir de ce pool de CA, puis sélectionnez les options de votre choix.
- Cliquez sur Suivant.
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 la façon dont la clé peut être utilisée, 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 Utilisation étendue des clés.
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 sélectionner les utilisations étendues des clés, cliquez sur le bouton Écrire les utilisations étendues des clés pour les certificats émis à partir de ce pool d'autorités de certification, puis sélectionnez les options de votre choix.
- Cliquez sur Suivant.
L'extension des règles de certificat dans le certificat exprime les règles suivies par le pool d'AC émetteur. Cette extension peut inclure des informations sur la façon dont les identités sont validées avant l'émission des certificats, sur la façon dont les certificats sont révoqués et sur la façon dont l'intégrité du pool d'autorités de certification est assurée. Cette extension vous aide à vérifier les certificats émis par le pool de CA et à voir comment ils sont utilisés.
Pour en savoir plus, consultez Règles relatives aux certificats.
Pour spécifier la règle qui définit l'utilisation du certificat, procédez comme suit :
- Ajoutez l'identifiant de la règle dans le champ Identifiants de règles.
- Cliquez sur Suivant.
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 pour l'émetteur du certificat.
Pour en savoir plus, consultez Authority Information Access.
Pour ajouter les serveurs OCSP qui apparaissent dans le champ d'extension AIA des certificats, procédez comme suit :
- Cliquez sur Ajouter un élément.
- Dans le champ URL du serveur, ajoutez l'URL du serveur OCSP.
- Cliquez sur OK.
- Cliquez sur Suivant.
Le champ Options d'autorité de certification d'un modèle de certificat définit la manière dont le certificat obtenu peut être utilisé dans une hiérarchie d'autorités de certification. 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'il émet.
parmi les options suivantes :
Incluez les configurations pour décrire les extensions CA X.509 : spécifiez les paramètres d'un modèle de certificat qui contrôlent les extensions X.509.
Limitez 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 CA. Si la valeur est définie sur
true
, le certificat peut être utilisé pour signer d'autres certificats. Si la valeur estfalse
, le certificat est un certificat d'entité finale et ne peut pas signer d'autres certificats. Si vous cliquez sur ce bouton, vous serez invité à définir des contraintes de nom pour l'extension des certificats d'autorité de certification.Incluez les configurations pour décrire la restriction de longueur du chemin des extensions X.509 : Spécifiez les paramètres qui contrôlent la longueur d'une chaîne de certificats, à partir d'un certificat spécifique. 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 la valeur est définie sur1
, la chaîne sous ce certificat CA ne peut inclure qu'une seule CA subordonnée. Si aucune valeur n'est déclarée, le nombre d'AC subordonnées dans la chaîne sous cette AC est illimité.- Cliquez sur Suivant.
Pour configurer des extensions personnalisées supplémentaires à inclure dans les certificats émis par le pool de CA, procédez comme suit :
- Cliquez sur Ajouter un élément.
- Dans le champ Identifiant d'objet, ajoutez un identifiant d'objet valide au format numérique séparé par des points.
- Dans le champ Valeur, ajoutez la valeur encodée en base64 pour l'identifiant.
- Si l'extension est essentielle, sélectionnez 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 règle d'émission de certificats à un pool d'autorités de certification, vous devez créer un fichier YAML qui décrit les restrictions sur les certificats que le pool d'autorités de certification peut émettre. Le contenu correspond à une IssuancePolicy.
À 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 champallowSubjectPassthrough
est défini surtrue
, le champ "Objet" est copié d'une demande de certificat dans le certificat signé. Sinon, le sujet demandé est ignoré. - Si le champ
allowSubjectAltNamesPassthrough
est défini surtrue
, l'extension SubjectAltNames est copiée d'une demande de certificat dans le certificat signé. Sinon, les SubjectAltNames demandés sont supprimés.
- Le champ
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 Emplacements.
- FILE_PATH : chemin d'accès au fichier
policy.yaml
.
Pour en savoir plus sur la commande
gcloud privateca pools update
, consultez gcloud privateca pools update.
Restrictions acceptées
Certificate Authority Service est compatible avec les restrictions de règles d'émission suivantes. Vous pouvez combiner les restrictions suivantes selon vos besoins pour créer une stratégie d'émission de certificats personnalisée.
Restreindre 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 les valeurs X.509 à ajouter à tous les certificats émis, en écrasant toutes les valeurs demandées, à l'aide du champ baseline_values.
Les valeurs baseline_values d'un pool de CA permettent de spécifier les propriétés suivantes :
- Utilisation de la clé
- Options de l'autorité de certification
- Serveurs OSCP AIA
- Extensions X.509 supplémentaires
Vous pouvez également combiner ces options.
Si vous modifiez une partie du champ baseline_values
, la modification remplace l'ensemble des valeurs du champ baseline_values
.
Exemple : Limitez une autorité de certification pour qu'elle n'émette que des certificats d'entité finale 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 à l'émission de 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 mTLS d'entité finale.
Restreindre les champs d'identité autorisés
Pour limiter l'identité des certificats émis par un pool d'autorités de certification, vous pouvez ajouter une expression [Common Expression Language (CEL)][4]{: .external} au champ identity_constraints de la règle d'émission. Les expressions CEL autorisent 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 les champs "Objet" et "SAN", consultez Utiliser CEL.
Exemple : Autoriser l'autorité de certification à émettre uniquement 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 et le SAN X.509 résolus avant la signature d'un certificat. Pour en savoir plus sur l'utilisation des expressions CEL, consultez Utiliser CEL.Exemple : Autorisez uniquement les SAN dont les noms DNS sont
us.google.org
ou se terminent 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 ayant des URI
https://google.com/webhp
ou commençant parspiffe://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 ayant des adresses e-mail
example@google.com
ou se terminant 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 : Autoriser uniquement les SAN personnalisés ayant un OID spécifique et 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" )'
Restreindre la durée de rétroactivité des certificats émis
Pour définir une valeur not_before_time antérieure pour les certificats émis, utilisez le champ backdate_duration. Lorsqu'ils sont configurés, les certificats de ce pool d'autorités de certification ont une valeur not_before_time égale à l'heure d'émission moins la durée spécifiée. La valeur not_after_time est ajustée pour maintenir la durée de vie du certificat demandée. La valeur backdate_duration doit être inférieure ou égale à 48 heures.
Exemple
Pour antidater les certificats d'une heure, utilisez le fichier policy.yaml
suivant :
policy.yaml
backdateDuration: 3600s
Restreindre 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 pour un certificat est supérieure à la durée de vie maximale, elle est explicitement tronquée.
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 qui peut ê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 à partir d'un pool de CA, consultez IssuanceModes.
Pour en savoir plus sur la demande de certificats, consultez Créer une demande de certificat.
Exemple : Autoriser uniquement 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 de clé minimale et les algorithmes de clé publique que les certificats peuvent utiliser, vous pouvez utiliser le champ allowedKeyTypes dans le fichier YAML de la règle 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 du module est inférieure à 2 048 bits. Si vous souhaitez utiliser une clé RSA avec une taille de module inférieure à 2 048 bits, vous devez l'autoriser explicitement à l'aide de la règle d'émission de certificats.
Exemple : Autoriser les clés RSA avec une taille de module comprise entre 3 072 et 4 096 bits (inclus), ou les clés ECDSA (Elliptic Curve Digital Signature Algorithm) sur la courbe NIST P-256.
policy.yaml
allowedKeyTypes:
- rsa:
minModulusSize: 3072
maxModulusSize: 4096
- ellipticCurve:
signatureAlgorithm: ECDSA_P256
Vous pouvez choisir l'un des algorithmes de signature de courbe elliptique suivants :
EC_SIGNATURE_ALGORITHM_UNSPECIFIED
: tout 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 NIST P-384.EDDSA_25519
: algorithme de signature numérique à courbe d'Edwards sur la courbe 25519, tel que décrit dans la norme RFC 8410.
Étapes suivantes
- En savoir plus sur les profils de certificats
- En savoir plus sur la demande de certificats
- Découvrez comment configurer des stratégies IAM.
- Découvrez comment utiliser le langage CEL (Common Expression Language).
- Découvrez comment gérer différents contrôles des règles.