Déployer un certificat autogéré global

Ce tutoriel vous explique comment utiliser le gestionnaire de certificats pour déployer un certificat autogéré global.

Les équilibreurs de charge suivants sont compatibles avec les certificats autogérés globaux :

  • Équilibreur de charge d'application externe global
  • Équilibreur de charge d'application classique
  • Équilibreur de charge réseau proxy externe global
  • Équilibreur de charge réseau proxy classique

Si vous souhaitez effectuer un déploiement sur des équilibreurs de charge régionaux ou interrégionaux, consultez les ressources suivantes :

Objectifs

Ce guide vous explique comment effectuer les tâches suivantes :

  • Importer un certificat autogéré dans le gestionnaire de certificats.
  • Déployer le certificat sur un équilibreur de charge compatible à l'aide d'un proxy HTTPS cible.

Avant de commencer

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the Compute Engine, Certificate Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  4. Installez la Google Cloud CLI.

  5. Configurez la gcloud CLI afin d'utiliser votre identité fédérée.

    Pour en savoir plus, consultez Se connecter à la gcloud CLI avec votre identité fédérée.

  6. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init

Rôles requis

Assurez-vous de disposer des rôles suivants pour effectuer les tâches décrites dans ce tutoriel :

  • Propriétaire du gestionnaire de certificats (roles/certificatemanager.owner)

    Obligatoire pour créer et gérer des ressources Certificate Manager.

  • Administrateur de l'équilibreur de charge Compute (roles/compute.loadBalancerAdmin) ou administrateur réseau Compute (roles/compute.networkAdmin)

    Obligatoire pour créer et gérer un proxy HTTPS cible.

Pour en savoir plus, consultez les ressources suivantes :

Créer l'équilibreur de charge

Ce tutoriel suppose que vous avez déjà créé et configuré les backends, les vérifications d'état, les services de backend et les mappages d'URL de l'équilibreur de charge. Si vous avez créé un équilibreur de charge d'application externe, notez le nom du mappage d'URL, car vous en aurez besoin plus tard dans ce tutoriel.

Si vous n'avez pas créé l'équilibreur de charge, consultez les pages suivantes pour en créer un :

Créer une clé privée et un certificat

Pour créer une clé privée et un certificat, procédez comme suit :

  1. Utilisez une autorité de certification (CA) tierce de confiance pour émettre le certificat avec sa clé associée.

  2. Vérifiez que le certificat est correctement chaîné et que la racine est approuvée.

  3. Préparez les fichiers encodés au format PEM suivants :

    • Le fichier de certificat (CRT)
    • Le fichier de clé privée correspondant (KEY)

Pour savoir comment demander et valider un certificat, consultez Créer une clé privée et un certificat.

Importer un certificat autogéré dans le gestionnaire de certificats

Pour importer le certificat dans le gestionnaire de certificats, procédez comme suit :

Console

  1. Dans la Google Cloud console, accédez à la page Gestionnaire de certificats.

    Accéder au gestionnaire de certificats

  2. Dans l'onglet Certificats, cliquez sur Ajouter un certificat.

  3. Dans le champ Nom du certificat, saisissez un nom unique pour le certificat.

  4. Facultatif : Dans le champ Description, saisissez une description du certificat. La description vous permet d'identifier le certificat.

  5. Dans Emplacement, sélectionnez Mondial.

  6. Dans Champ d'application, sélectionnez Par défaut.

  7. Dans Type de certificat, sélectionnez Créer un certificat autogéré.

  8. Pour le champ Certificat, effectuez l'une des opérations suivantes :

    • Cliquez sur le bouton Importer et sélectionnez votre fichier de certificat au format PEM.
    • Copiez et collez le contenu d'un certificat au format PEM. Le contenu doit commencer par -----BEGIN CERTIFICATE----- et se terminer par -----END CERTIFICATE-----.
  9. Pour le champ Certificat de clé privée, effectuez l'une des opérations suivantes :

    • Cliquez sur le bouton Importer et sélectionnez votre clé privée. Votre clé privée doit être au format PEM et non protégée par une phrase secrète.
    • Copiez et collez le contenu d'une clé privée au format PEM. Les clés privées doivent commencer par -----BEGIN PRIVATE KEY----- et se terminer par -----END PRIVATE KEY-----.
  10. Dans le champ Libellés, spécifiez les libellés à associer au certificat. Pour ajouter un libellé, cliquez sur Ajouter un libellé, puis spécifiez une clé et une valeur pour votre libellé.

  11. Cliquez sur Créer.

    Le nouveau certificat s'affiche dans la liste des certificats.

gcloud

Pour créer un certificat autogéré global, utilisez la certificate-manager certificates create commande :

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --certificate-file="CERTIFICATE_FILE" \
    --private-key-file="PRIVATE_KEY_FILE"

Remplacez les éléments suivants :

  • CERTIFICATE_NAME : nom du certificat.
  • CERTIFICATE_FILE : chemin d'accès et nom du fichier de certificat CRT.
  • PRIVATE_KEY_FILE : chemin d'accès et nom du fichier de clé privée KEY.

Terraform

Pour importer un certificat autogéré, vous pouvez utiliser une google_certificate_manager_certificate ressource avec le self_managed bloc.

API

Importez le certificat en envoyant une requête POST à la méthode certificates.create comme suit :

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME
{
  self_managed: {
    pem_certificate: "PEM_CERTIFICATE",
    pem_private_key: "PEM_KEY",
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID: ID de votre Google Cloud projet.
  • CERTIFICATE_NAME : nom du certificat.
  • PEM_CERTIFICATE : PEM du certificat.
  • PEM_KEY : PEM de la clé.

Déployer le certificat autogéré sur un équilibreur de charge

Pour déployer le certificat autogéré global, utilisez un mappage de certificats.

Créer un mappage de certificat

Créez un mappage de certificats qui fait référence à l'entrée de mappage de certificats associée à votre certificat :

gcloud

Pour créer un mappage de certificats, utilisez la commandegcloud certificate-manager maps create :

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Remplacez CERTIFICATE_MAP_NAME par le nom du mappage de certificats cible.

Terraform

Pour créer un mappage de certificats, vous pouvez utiliser une google_certificate_manager_certificate_map ressource.

resource "google_certificate_manager_certificate_map" "certificate_map" {
  name        = "${local.name}-certmap-${random_id.tf_prefix.hex}"
  description = "${local.domain} certificate map"
  labels = {
    "terraform" : true
  }
}

Créer une entrée de mappage de certificats

Créez une entrée de mappage de certificats et associez-la à votre certificat et à votre mappage de certificats :

gcloud

Pour créer une entrée de mappage de certificats, utilisez la gcloud certificate-manager maps entries create commande :

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME" \
    --hostname="HOSTNAME"

Remplacez les éléments suivants :

  • CERTIFICATE_MAP_ENTRY_NAME : nom de l'entrée de mappage de certificats.
  • CERTIFICATE_MAP_NAME : nom du mappage de certificats auquel l'entrée de mappage de certificats est associée.
  • CERTIFICATE_NAME : nom du certificat que vous souhaitez associer à l'entrée de mappage de certificats.
  • HOSTNAME : nom d'hôte que vous souhaitez associer à l'entrée de mappage de certificats.

    Si vous souhaitez créer un certificat qui couvre à la fois un domaine générique et un domaine racine, spécifiez le nom d'hôte avec une racine et un caractère générique, par exemple example.com et *.example.com. En outre, vous devez spécifier deux entrées de mappage de certificats : une pour example.com et l'autre pour *.example.com.

Terraform

Pour créer une entrée de mappage de certificats avec un domaine racine, utilisez une google_certificate_manager_certificate_map_entry ressource.

resource "google_certificate_manager_certificate_map_entry" "first_entry" {
  name        = "${local.name}-first-entry-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = local.domain
}

Pour créer une entrée de mappage de certificats avec un domaine générique, utilisez une google_certificate_manager_certificate_map_entry ressource.

resource "google_certificate_manager_certificate_map_entry" "second_entry" {
  name        = "${local.name}-second-entity-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = "*.${local.domain}"
}

Vérifier que l'entrée de mappage de certificats est active

Vérifiez que l'entrée de mappage de certificats est active avant d'associer le mappage de certificats correspondant au proxy cible.

Pour vérifier l'entrée de mappage de certificats, utilisez la gcloud certificate-manager maps entries describe commande :

gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

Remplacez les éléments suivants :

  • CERTIFICATE_MAP_ENTRY_NAME : nom de l'entrée de mappage de certificats.
  • CERTIFICATE_NAME : nom du certificat que vous souhaitez associer à l'entrée de mappage de certificats.

Le résultat ressemble à ce qui suit :

certificates:
createTime: '2021-09-06T10:01:56.229472109Z'
hostname: example.com
name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry
state: ACTIVE
updateTime: '2021-09-06T10:01:58.277031787Z'

Associer le mappage de certificats au proxy cible

Vous pouvez associer le mappage de certificats à un nouveau proxy cible ou à un proxy cible existant.

gcloud

Pour associer le mappage de certificats à un nouveau proxy cible, utilisez la gcloud compute target-https-proxies create commande :

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --url-map="URL_MAP" \
    --global

Remplacez les éléments suivants :

  • PROXY_NAME : nom du proxy cible.
  • CERTIFICATE_MAP_NAME: nom du mappage de certificats faisant référence à l'entrée de mappage de certificats et au certificat associé.
  • URL_MAP : nom du mappage d'URL

Pour associer le mappage de certificats à un proxy HTTPS cible existant, utilisez la commandegcloud compute target-https-proxies update. Si vous ne connaissez pas le nom du proxy cible existant, accédez à la page Proxys cibles et notez le nom du proxy cible.

gcloud compute target-https-proxies update PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --global

Après avoir créé ou mis à jour le proxy cible, exécutez la commande suivante pour le vérifier :

gcloud compute target-https-proxies list

Terraform

Pour associer le mappage de certificats au proxy cible, vous pouvez utiliser une google_compute_target_https_proxy ressource.

Lorsque vous configurez un proxy cible, si vous associez des certificats TLS (SSL) directement et via un mappage de certificats, le proxy utilise les certificats référencés par le mappage de certificats et ignore les certificats TLS (SSL) associés directement.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce tutoriel ne vous soient facturées sur votre Google Cloud compte, supprimez-les.

  1. Supprimez l'équilibreur de charge et ses ressources.

    Consultez la section Nettoyer une configuration d'équilibrage de charge

  2. Supprimez ou dissociez le mappage de certificats du proxy.

    Pour supprimer le mappage de certificats, exécutez la commande suivante :

    gcloud compute target-https-proxies delete PROXY_NAME
    

    Si vous souhaitez conserver le proxy HTTPS cible, dissociez le mappage de certificats du proxy.

    • Si des certificats TLS (SSL) sont associés directement au proxy, la dissociation du mappage de certificats entraîne la reprise de l'utilisation de ces certificats TLS (SSL) associés directement.
    • Si aucun certificat TLS (SSL) n'est associé directement au proxy, le mappage de certificats ne peut pas être dissocié du proxy. Vous devez d'abord associer directement au moins un certificat TLS (SSL) au proxy avant de pouvoir dissocier le mappage de certificats.

    Pour dissocier le mappage de certificats, exécutez la commande suivante :

    gcloud compute target-https-proxies update PROXY_NAME \
        --clear-certificate-map
    

    Remplacez PROXY_NAME par le nom du proxy cible.

  3. Supprimez l'entrée de mappage de certificats du mappage de certificats :

    gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \
        --map="CERTIFICATE_MAP_NAME"
    

    Remplacez les éléments suivants :

    • CERTIFICATE_MAP_ENTRY_NAME : nom de l'entrée de mappage de certificats.
    • CERTIFICATE_MAP_NAME : nom du mappage de certificats.
  4. Supprimez le mappage de certificats :

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Remplacez CERTIFICATE_MAP_NAME par le nom du mappage de certificats.

  5. Supprimez le certificat importé :

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Remplacez CERTIFICATE_NAME par le nom du certificat.

Étape suivante