Émettre un certificat à l'aide de Google Cloud CLI

Cette page explique comment générer ou émettre des certificats via Certificate Authority Service à l'aide de Google Cloud CLI.

Le service d'autorité de certification vous permet de déployer et de gérer des autorités de certification privées sans gérer l'infrastructure.

Avant de commencer

  • Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisezla en exécutant la commande suivante :

    gcloud init

    Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  • Créez ou sélectionnez un Google Cloud projet.

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous avez besoin du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un Google Cloud projet :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du Google Cloud projet que vous créez.

    • Sélectionnez le Google Cloud projet que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre Google Cloud projet.

  • Activez l'API Certificate Authority Service :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin), qui contient l' serviceusage.services.enable autorisation. Découvrez comment attribuer des rôles.

    gcloud services enable privateca.googleapis.com

  • Vérifiez que la facturation est activée pour votre Google Cloud projet.

  • Configurez un emplacement par défaut à utiliser dans les commandes gcloud de ce guide de démarrage rapide.

    gcloud config set privateca/location LOCATION
    

    Les ressources du service d'autorité de certification, telles que les pools d'autorités de certification et les autorités de certification, se trouvent dans un seul Google Cloud emplacement que vous ne pouvez pas modifier après avoir créé ces ressources.

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

Un pool d'autorités de certification (CA) est une collection de plusieurs autorités de certification. Un pool d'autorités de certification permet d'alterner les chaînes de confiance sans interruption ni temps d'arrêt pour les charges de travail.

Pour créer un pool d'autorités de certification au niveau Enterprise, exécutez la commande suivante :

gcloud privateca pools create POOL_ID --location LOCATION --tier "enterprise"

Remplacez les éléments suivants :

  • POOL_ID : 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.

Les noms de ressources peuvent contenir des lettres, des chiffres, des traits d'union (-) et des traits de soulignement (_), et comporter jusqu'à 63 caractères.

Créer une autorité de certification racine

Un pool d'autorités de certification est vide lors de sa création. Pour demander des certificats à partir d'un pool d'autorités de certification, vous devez y ajouter une autorité de certification.

Pour créer une autorité de certification racine et l'ajouter au pool d'autorités de certification que vous avez créé, exécutez la commande suivante :

gcloud privateca roots create CA_ID --pool POOL_ID --location LOCATION --subject "CN=Example Prod Root CA,O=Google"

Remplacez les éléments suivants :

  • CA_ID : nom de l'autorité de certification racine.
  • POOL_ID : 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.

Certificate Authority Service renvoie le résultat suivant lorsqu'il crée l'autorité de certification racine :

Created Certificate Authority [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities/CA_ID]

Activez l'autorité de certification racine en saisissant y lorsque vous y êtes invité par la gcloud CLI.

(Facultatif) Créer un pool d'autorités de certification subordonnées

Pour créer un pool d'autorités de certification subordonnées, exécutez la commande suivante :

    gcloud privateca pools create SUBORDINATE_POOL_ID
        --location LOCATION
        --tier TIER

Remplacez les éléments suivants :

  • SUBORDINATE_POOL_ID : ID du pool d'autorités de certification subordonnées.
  • LOCATION : emplacement du pool d'autorités de certification subordonnées. Pour obtenir la liste complète des emplacements, consultez la section Emplacements.
  • TIER : niveau de l'autorité de certification subordonnée, qui peut être "devops" ou "enterprise".

(Facultatif) Créer une autorité de certification subordonnée signée par une autorité de certification racine stockée dans Google Cloud

Pour créer une autorité de certification subordonnée dans le pool d'autorités de certification subordonnées que vous avez créé à l'étape précédente, exécutez la commande suivante :

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
        --location=LOCATION \
        --pool=SUBORDINATE_POOL_ID \
        --issuer-pool=POOL_ID \
        --issuer-location=ISSUER_LOCATION \
        --from-ca=EXISTING_CA_ID \
        --kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION

Remplacez les éléments suivants :

  • SUBORDINATE_CA_ID : ID de l'autorité de certification subordonnée.
  • LOCATION : emplacement de l'autorité de certification subordonnée. Pour obtenir la liste complète des emplacements, consultez la section Emplacements.
  • SUBORDINATE_POOL_ID : ID du pool d'autorités de certification subordonnées que vous avez créé dans la section précédente.
  • POOL_ID : ID du pool d'autorités de certification parent.
  • ISSUER_LOCATION : emplacement du certificat.
  • EXISTING_CA_ID : ID de l'autorité de certification source.
  • PROJECT_ID : ID du projet.
  • LOCATION_ID : emplacement du trousseau de clés.
  • KEY_RING : nom du trousseau de clés dans lequel se trouve la clé.
  • KEY : nom de la clé.
  • KEY_VERSION : version de la clé.

L'instruction suivante est renvoyée lorsque l'autorité de certification subordonnée est créée.

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID].

Activez l'autorité de certification subordonnée en saisissant y lorsque vous y êtes invité par la gcloud CLI.

Créer un certificat

Pour utiliser l'autorité de certification nouvellement créée afin de créer un certificat, procédez comme suit :

  1. Installez la bibliothèque de cryptographie Pyca à l'aide de la commande pip.

      pip install --user "cryptography>=2.2.0"
    

    Certificate Authority Service utilise la bibliothèque de cryptographie Pyca pour générer et stocker une nouvelle paire de clés asymétriques sur votre machine locale. Cette clé n'est jamais envoyée à Certificate Authority Service.

  2. Pour permettre à Google Cloud SDK d'utiliser la bibliothèque de cryptographie Pyca, vous devez activer les packages de site.

    macOS ou Linux

    export CLOUDSDK_PYTHON_SITEPACKAGES=1
    

    Windows

    set CLOUDSDK_PYTHON_SITEPACKAGES=1
    
  3. Créez un certificat.

      gcloud privateca certificates create \
          --issuer-pool POOL_ID \
          --issuer-location ISSUER_LOCATION \
          --subject "CN=Example Prod,O=Google" \
          --generate-key \
          --key-output-file=./key \
          --cert-output-file=./cert.pem
    

    Remplacez les éléments suivants :

    • POOL_ID : ID de ressource du pool d'autorités de certification que vous avez créé.
    • ISSUER_LOCATION : emplacement de l'autorité de certification qui a émis le certificat numérique.

    Certificate Authority Service renvoie la réponse suivante :

    Created Certificate [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificates/CERTIFICATE_ID]
    

Effectuer un nettoyage

Effectuez un nettoyage en supprimant le pool d'autorités de certification, l'autorité de certification et le projet que vous avez créés pour ce guide de démarrage rapide.

  1. Révoquez le certificat.

      Pour révoquer un certificat, exécutez la commande suivante :

       gcloud privateca certificates revoke --certificate CERT_NAME --issuer-pool POOL_ID --location 
      LOCATION
        

      Remplacez les éléments suivants :

      • CERT_NAME : nom du certificat que vous souhaitez révoquer.
      • POOL_ID : nom du pool d'autorités de certification qui a émis le certificat.
      • LOCATION: emplacement du pool d'autorités de certification.
  2. Supprimez l'autorité de certification.

    Vous ne pouvez supprimer une autorité de certification qu'après avoir révoqué tous les certificats qu'elle a émis.

    1. Désactivez l'autorité de certification.

      gcloud privateca roots disable CA_ID --pool=POOL_ID --location=LOCATION
      

      Remplacez les éléments suivants :

      • CA_ID : ID de ressource de l'autorité de certification.
      • POOL_ID : ID de ressource 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.
    2. Supprimez l'autorité de certification.

      gcloud privateca roots delete CA_ID --pool=POOL_ID --location=LOCATION
      

    L'état de l'autorité de certification passe à Deleted. Certificate Authority Service supprime définitivement l'autorité de certification 30 jours après que vous avez lancé la suppression.

  3. Supprimez le pool d'autorités de certification.

    Vous ne pouvez supprimer un pool d'autorités de certification qu'une fois que l'autorité de certification qu'il contient a été définitivement supprimée.

    gcloud privateca pools delete POOL_ID --location=LOCATION
    
  4. Supprimez le projet.

    Supprimez un Google Cloud projet :

    gcloud projects delete PROJECT_ID

Étape suivante