Créer une autorité de certification subordonnée à partir d'une autorité de certification externe

Cette page explique comment créer une autorité de certification (CA) subordonnée qui se lie à une autorité de certification racine externe.

Si vous disposez d'une hiérarchie d'infrastructure à clé publique (PKI) contenant une autorité de certification racine et des autorités de certification subordonnées, vous pouvez conserver la même autorité de certification racine et créer une autorité de certification subordonnée dans CA Service qui est associée à votre autorité de certification racine externe. La clé et les opérations de la CA racine externe restent en dehors de Google Cloud. Vous ne pouvez utiliser l'autorité de certification racine externe que pour émettre le certificat de l'autorité de certification subordonnée à Google Cloud. L'autorité de certification subordonnée est immédiatement approuvée par toute charge de travail qui fait confiance à l'autorité de certification racine externe. Vous pouvez ensuite utiliser l'autorité de certification subordonnée pour émettre des certificats sans avoir à revenir à l'autorité de certification racine externe au moment de l'exécution.

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 en savoir plus, consultez la section Configurer des stratégies IAM.
  • Identifiez l'autorité de certification racine externe.
  • Définissez le nom, l'objet, la période de validité et la taille de clé de l'autorité de certification subordonnée. Pour en savoir plus, consultez Déterminer les paramètres de l'autorité de certification.

Créer une autorité de certification subordonnée à partir d'une autorité de certification externe

Pour créer une autorité de certification subordonnée à partir d'une autorité de certification externe, procédez comme suit:

  1. Générer la demande de signature de certificat (CSR) de l'autorité de certification subordonnée: la première étape consiste à générer une CSR pour l'autorité de certification subordonnée, puis à la télécharger.

  2. Obtenir le certificat de l'autorité de certification subordonnée signé par l'autorité de certification racine externe: la deuxième étape consiste à envoyer la demande CSR à l'autorité de certification racine externe pour qu'elle la signe. Assurez-vous de suivre les instructions spécifiques de l'autorité de certification racine externe pour envoyer des requêtes de signature de certificat et obtenir des certificats signés.

  3. Importez le certificat d'autorité de certification secondaire signé dans le service d'autorité de certification : la dernière étape consiste à importer la chaîne de certificats PEM signée à l'aide de la Google Cloud CLI ou de la console Google Cloud.

La section suivante explique comment créer une autorité de certification subordonnée à partir d'une autorité de certification racine externe.

Créer une requête de signature de certificat

Console

  1. Accédez au menu Sécurité > Certificate Authority Service (Sécurité > Service d'autorité de certification) dans la console Google Cloud.

    Accéder à Certificate Authority Service

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

  3. Cliquez sur Créer une autorité de certification.

Sélectionner le type d'autorité de certification:

  1. Cliquez sur Autorité de certification subordonnée.
  2. Dans le champ Valide pour, saisissez la durée pendant laquelle vous souhaitez que les certificats émis par le certificat d'autorité de certification soient valides.
  3. Cliquez sur L'autorité de certification racine est externe.
  4. Sélectionnez l'une des options disponibles pour le niveau de l'autorité de certification. Pour en savoir plus, consultez la section Sélectionner les niveaux d'opération.
  5. Sous Regionalization (Regionalisation), sélectionnez un emplacement de l'autorité de certification dans la liste.
  6. Cliquez sur Suivant.
Configurer le nom d'objet de l'autorité de certification
  1. Dans le champ Organisation (O), saisissez le nom de votre entreprise.
  2. Facultatif: Dans le champ Unité organisationnelle (UO), saisissez la subdivision de l'entreprise ou l'unité commerciale.
  3. Facultatif: Dans le champ Nom du pays, saisissez un code pays à deux lettres.
  4. (Facultatif) Dans le champ Nom de l'État ou de la province, saisissez le nom de votre État.
  5. Facultatif: Dans le champ Nom de la localité, saisissez le nom de votre ville.
  6. Dans le champ Nom courant de l'autorité de certification (CN), saisissez le nom de l'autorité de certification.
  7. Dans le champ ID du pool, saisissez le nom du pool d'autorités de certification. Vous ne pouvez pas modifier le pool d'autorités de certification une fois l'autorité de certification créée.
  8. Cliquez sur Suivant.
Configurer l'algorithme et la taille de clé de l'autorité de certification
  1. Choisissez l'algorithme de clé qui répond le mieux à vos besoins. Pour savoir comment choisir l'algorithme de clé approprié, consultez la section Choisir un algorithme de clé.
  2. Cliquez sur Suivant.
Configurer les artefacts des autorités de certification

Les étapes suivantes sont facultatives. Si vous ignorez ces étapes, les paramètres par défaut s'appliquent.

  1. Indiquez si vous souhaitez utiliser un bucket Cloud Storage géré par Google ou autogéré.
  2. Si vous ne sélectionnez pas de bucket Cloud Storage autogéré, CA Service crée un bucket géré par Google au même emplacement que l'autorité de certification.

  3. Indiquez si vous souhaitez désactiver la publication des listes de révocation de certificats (LRC) et des certificats d'autorité de certification dans le bucket Cloud Storage.
  4. La publication de la liste de révocation de certificats et du certificat de l'autorité de certification dans un bucket Cloud Storage est activée par défaut. Pour désactiver ces paramètres, cliquez sur les boutons d'activation/de désactivation.

  5. Cliquez sur Suivant.
Ajouter des libellés

Les étapes suivantes sont facultatives.

Si vous souhaitez ajouter des libellés à l'autorité de certification, procédez comme suit:

  1. Cliquez sur Ajouter un élément.
  2. Dans le champ Clé 1, saisissez la clé de libellé.
  3. Dans le champ Valeur 1, saisissez la valeur de l'étiquette.
  4. Si vous souhaitez ajouter un autre libellé, cliquez sur Ajouter un élément. Ajoutez ensuite la clé et la valeur du libellé, comme indiqué aux étapes 2 et 3.
  5. Cliquez sur Suivant.
Vérifier les paramètres

Vérifiez attentivement tous les paramètres, puis cliquez sur Créer pour créer l'autorité de certification.

Télécharger le fichier de requête de signature de certificat

  1. Sur la page Autorité de certification, sélectionnez l'autorité de certification que vous souhaitez activer.
  2. Cliquez sur Activer.
  3. Dans la boîte de dialogue qui s'ouvre, cliquez sur Télécharger le CSR.

    Téléchargez la requête de signature de certificat de l'autorité de certification.

gcloud

  1. Pour créer un pool d'autorités de certification pour l'autorité de certification subordonnée, exécutez la commande suivante. Pour en savoir plus, consultez Créer un pool d'autorités de certification.

    gcloud privateca pools create SUBORDINATE_POOL_ID
    

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

  2. Pour créer une autorité de certification subordonnée dans le pool d'autorités de certification créé, exécutez la commande gcloud suivante. La commande gcloud crée également un CSR et l'enregistre dans le fichier FILE_NAME.

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
      --pool=SUBORDINATE_POOL_ID \
      --create-csr --csr-output-file=FILE_NAME \
      --key-algorithm="ec-p256-sha256" \
      --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Remplacez les éléments suivants :

    • SUBORDINATE_CA_ID: identifiant unique de l'autorité de certification subordonnée.
    • SUBORDINATE_POOL_ID: nom du pool d'autorités de certification.
    • FILE_NAME: nom du fichier dans lequel la CSR encodée au format PEM est écrite.

    L'indicateur --key-algorithm utilise l'algorithme cryptographique que vous souhaitez utiliser pour créer une clé Cloud HSM gérée pour l'autorité de certification.

    L'indicateur --subject utilise le nom X.501 de l'objet du certificat.

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

L'instruction suivante est renvoyée lors de la création de la CSR:

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.

Pour afficher la liste complète des paramètres disponibles, exécutez la commande suivante:

gcloud privateca subordinates create --help

Si vous perdez la CSR, vous pouvez la télécharger à nouveau à l'aide de la commande suivante:

gcloud privateca subordinates get-csr SUBORDINATE_CA_ID \
  --pool=SUBORDINATE_POOL_ID

Terraform

  1. Pour créer un pool d'autorités de certification et une autorité de certification subordonnée dans ce pool, utilisez le fichier de configuration suivant:

    resource "google_privateca_ca_pool" "default" {
      name     = "test-ca-pool"
      location = "us-central1"
      tier     = "ENTERPRISE"
    }
    
    resource "google_privateca_certificate_authority" "sub-ca" {
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = "my-certificate-authority-sub"
      location = "us-central1"
      config {
        subject_config {
          subject {
            organization = "HashiCorp"
            common_name = "my-subordinate-authority"
          }
          subject_alt_name {
            dns_names = ["hashicorp.com"]
          }
        }
        x509_config {
          ca_options {
            is_ca = true
            # Force the sub CA to only issue leaf certs
            max_issuer_path_length = 0
          }
          key_usage {
            base_key_usage {
              cert_sign = true
              crl_sign = true
            }
            extended_key_usage {
            }
          }
        }
      }
      lifetime = "86400s"
      key_spec {
        algorithm = "RSA_PKCS1_4096_SHA256"
      }
      type = "SUBORDINATE"
    }
    
  2. Pour récupérer la CSR, ajoutez la configuration suivante.

    data "google_privateca_certificate_authority" "sub-ca-csr" {
      location = "us-central1"
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = google_privateca_certificate_authority.sub-ca.certificate_authority_id
    }
    
    output "csr" {
      value = data.google_privateca_certificate_authority.sub-ca-csr.pem_csr
    }
    
  3. Exécutez terraform apply.

Signer la requête de signature de certificat

Transmettez le fichier CSR généré au membre de votre organisation responsable de l'émission de certificats et demandez-lui de le signer. Les étapes spécifiques dépendent de la configuration de votre organisation.

Vous pouvez tester une autorité de certification racine simple à l'aide des commandes openssl suivantes:

Shell

Configurez les paramètres de la nouvelle autorité de certification racine.

cat > root.conf <<- EOM
[ req ]
distinguished_name = req_distinguished_name
x509_extensions    = v3_ca
prompt             = no
[ req_distinguished_name ]
commonName = Sample Root
[ v3_ca ]
subjectKeyIdentifier=hash
basicConstraints=critical, CA:true
EOM

Créez la nouvelle autorité de certification racine.

openssl req -x509 -new -nodes -config root.conf -keyout rootCA.key \
  -days 3000 -out rootCA.crt -batch

Configurez les extensions à ajouter au nouveau certificat d'autorité de certification subordonnée.

cat > extensions.conf <<- EOM
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
extendedKeyUsage=critical,serverAuth
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOM

Signez la CSR de l'autorité de certification subordonnée avec cette racine.

openssl x509 -req -in FILE_NAME -CA rootCA.crt -CAkey rootCA.key \
  -CAcreateserial -out subordinate.crt -days 1095 -sha256 -extfile extensions.conf

Concaténez l'ensemble de la chaîne de certificats dans un seul fichier.

cat subordinate.crt > chain.crt
cat rootCA.crt >> chain.crt

Importer le certificat signé

Pour activer une autorité de certification subordonnée à l'aide d'un certificat signé, procédez comme suit:

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. Cliquez sur l'onglet Gestionnaire d'autorités de certification.

  3. Sous Autorités de certification, sélectionnez l'autorité de certification secondaire que vous avez créée.

  4. Cliquez sur Activer.

  5. Dans la boîte de dialogue qui s'ouvre, cliquez sur Download CSR (Télécharger la requête de signature de certificat) pour télécharger le fichier de requête de signature de certificat encodé au format PEM que l'autorité de certification émettrice peut signer.

  6. Cliquez sur Suivant.

  7. Dans le champ Importer la chaîne de certificats, cliquez sur Parcourir.

  8. Importez le fichier de certificat signé avec l'extension .crt.

  9. Cliquez sur Activer.

gcloud

gcloud privateca subordinates activate SUBORDINATE_CA_ID \
  --pool=SUBORDINATE_POOL_ID \
  --pem-chain ./chain.crt

Remplacez les éléments suivants :

  • SUBORDINATE_CA_ID: identifiant unique de l'autorité de certification subordonnée que vous souhaitez activer.
  • SUBORDINATE_POOL_ID: nom du pool d'autorités de certification contenant l'autorité de certification subordonnée.

L'option --pem-chain est obligatoire. Cet indicateur accepte le fichier contenant la liste des certificats encodés au format PEM. La liste des certificats commence par le certificat de l'autorité de certification actuelle et se termine par le certificat de l'autorité de certification racine.

Pour en savoir plus sur la commande gcloud privateca subordinates activate, consultez gcloud privateca subordinates activate.

L'instruction suivante est renvoyée lorsque le certificat signé est importé:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Enregistrez le certificat d'autorité de certification signé en local sous le nom subordinate.crt.
  2. Enregistrez les certificats d'autorité de certification de signataire en local sous le nom rootCA.crt.
  3. Supprimez la configuration d'extraction de la requête de signature de certificat mentionnée à la première étape, car elle tente d'extraire la requête de signature de certificat, ce qui n'est pas autorisé après l'activation de l'autorité de certification.
  4. Mettez à jour la configuration de l'autorité de certification secondaire avec les champs suivants, puis exécutez terraform apply.

      pem_ca_certificate     = file("subordinate.crt")
      subordinate_config {
        pem_issuer_chain {
            pem_certificates = [file("rootCA.crt")] 
        }
      }
    

    Si la chaîne d'émetteurs inclut plusieurs autorités de certification, spécifiez la valeur [file("intermediateCA.cert"), file("rootCA.crt")].

Étape suivante