Déployer un certificat géré par Google global avec autorisation d'équilibreur de charge


Ce tutoriel vous explique comment utiliser Certificate Manager pour déployer un certificat mondial géré par Google avec une autorisation d'équilibreur de charge.

L'autorisation d'équilibreur de charge est la méthode la plus efficace pour obtenir un certificat géré par Google. Il permet de conserver une configuration DNS propre et fournit le certificat TLS une fois la configuration terminée.

Les équilibreurs de charge suivants sont compatibles avec les certificats gérés par Google avec autorisation d'équilibreur de charge :

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

Objectifs

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

  • Créez un certificat géré par Google émis par une autorité de certification de confiance publique avec autorisation de l'équilibreur de charge à l'aide du gestionnaire de certificats.
  • Déployez le certificat sur un équilibreur de charge compatible à l'aide d'un proxy HTTPS cible.

Si vous déployez un certificat sur un domaine de production, le trafic est brièvement interrompu pendant que le certificat est configuré et activé sur votre équilibreur de charge.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Make sure that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine, Certificate Manager APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Rôles requis

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

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

      Obligatoire pour créer et gérer les 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 le proxy HTTPS cible.

    • Administrateur DNS (roles/dns.admin)

      Obligatoire si vous souhaitez utiliser Cloud DNS comme solution DNS.

    Pour en savoir plus, consultez les ressources suivantes :

    Noms de domaine

    Pour créer des certificats, obtenez les noms de domaine complets des domaines dont vous êtes propriétaire. Si vous n'avez pas de domaine, vous pouvez utiliser Cloud Domains pour enregistrer un domaine.

    Créer l'équilibreur de charge

    Ce tutoriel part du principe que vous avez déjà créé et configuré les backends, les vérifications de l'é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 un certificat géré par Google avec une autorisation d'équilibreur de charge

Pour créer un certificat géré par Google avec une autorisation d'équilibreur de charge, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Certificate Manager.

    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. Pour Champ d'application, sélectionnez Par défaut.

  7. Dans le champ Type de certificat, sélectionnez Créer un certificat géré par Google.

  8. Dans le champ Type d'autorité de certification, sélectionnez Publique.

  9. Dans le champ Noms de domaine, spécifiez une liste de noms de domaine du certificat, séparés par des virgules. Chaque nom de domaine doit être un nom de domaine complet, tel que myorg.example.com.

  10. Pour Type d'autorisation, sélectionnez Autorisation de l'équilibreur de charge.

  11. 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é.

  12. Cliquez sur Créer.

    Le nouveau certificat apparaît dans la liste des certificats.

gcloud

Pour créer un certificat global géré par Google avec autorisation de l'équilibreur de charge, utilisez la commande certificate-manager certificates create :

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES"

Remplacez les éléments suivants :

  • CERTIFICATE_NAME : nom du certificat.
  • DOMAIN_NAMES : liste des domaines cibles séparés par une virgule. Chaque nom de domaine doit être un nom de domaine complet, tel que myorg.example.com.

Terraform

Utilisez une ressource google_certificate_manager_certificate.

resource "google_certificate_manager_certificate" "default" {
  name        = "${local.name}-rootcert-${random_id.tf_prefix.hex}"
  description = "Cert with LB authorization"
  managed {
    domains = [local.domain]
  }
  labels = {
    "terraform" : true
  }
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

API

Créez 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"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
 }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud .
  • CERTIFICATE_NAME : nom du certificat.
  • DOMAIN_NAMES : liste des domaines cibles séparés par une virgule. Chaque nom de domaine doit être un nom de domaine complet, tel que myorg.example.com.

Déployer le certificat sur un équilibreur de charge

Pour déployer le certificat global géré par Google, utilisez un mappage de certificat.

Créer un mappage de certificat

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

gcloud

Pour créer une carte de certificats, utilisez la commande gcloud certificate-manager maps create :

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Remplacez CERTIFICATE_MAP_NAME par le nom du mappage de certificat cible.

Terraform

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

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 certificat

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

gcloud

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

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 du mappage de certificats.
  • CERTIFICATE_MAP_NAME : nom du mappage de certificat auquel l'entrée de mappage de certificat est associée.
  • CERTIFICATE_NAME : nom du certificat que vous souhaitez associer à l'entrée de mappage de certificat.
  • HOSTNAME : nom d'hôte que vous souhaitez associer à l'entrée du mappage de certificats.

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

Terraform

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

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 ressource google_certificate_manager_certificate_map_entry.

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 du mappage de certificat est active

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

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

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 du mappage de certificats.
  • CERTIFICATE_NAME : nom du certificat que vous souhaitez associer à l'entrée de mappage de certificat.

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 la carte de certificats à un nouveau proxy cible ou à un proxy cible existant.

gcloud

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

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 certificat et au certificat associé.
  • URL_MAP : nom du mappage d'URL

Pour associer le mappage de certificats à un proxy HTTPS cible existant, utilisez la commande gcloud 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 la carte de certificats au proxy cible, vous pouvez utiliser une ressource google_compute_target_https_proxy.

Lorsque vous configurez un proxy cible, si vous associez des certificats TLS (SSL) directement et également 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.

Vérifier l'état du certificat

Avant de déployer un certificat sur un équilibreur de charge, vérifiez qu'il est actif. Le passage de l'état du certificat à ACTIVE peut prendre plusieurs minutes.

Console

  1. Dans la console Google Cloud , accédez à la page Certificate Manager.

    Accéder au Gestionnaire de certificats

  2. Dans l'onglet Certificats, vérifiez l'état du certificat dans la colonne État.

gcloud

Pour vérifier l'état du certificat, exécutez la commande suivante :

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Remplacez CERTIFICATE_NAME par le nom du certificat géré par Google cible.

Le résultat ressemble à ce qui suit :

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  - domain: myorg.example.com
    state: AUTHORIZED
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  - myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Si l'état du certificat n'est pas ACTIVE au bout de plusieurs heures, vérifiez les points suivants :

Pour connaître la procédure de dépannage, consultez la section Dépannage du Gestionnaire de certificats.

Effectuer un nettoyage

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

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

    Pour en savoir plus, consultez Nettoyer une configuration d'équilibrage de charge.

  2. Supprimez ou dissociez la carte de certificat du proxy.

    Pour supprimer la carte 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. Avant de dissocier la carte de certificat, tenez compte des points suivants :

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

    Pour dissocier la carte 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 certificat 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 du mappage de certificats.
    • CERTIFICATE_MAP_NAME : nom du mappage de certificats.
  4. Supprimez le mappage de certificat :

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Remplacez CERTIFICATE_MAP_NAME par le nom du mappage de certificat.

  5. Supprimez le certificat géré par Google :

    Console

    1. Dans la console Google Cloud , accédez à la page Certificate Manager.

      Accéder au Gestionnaire de certificats

    2. Dans l'onglet Certificats, cochez la case du certificat.

    3. Cliquez sur Supprimer.

    4. Dans la boîte de dialogue qui s'affiche, cliquez sur Supprimer pour confirmer.

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Remplacez CERTIFICATE_NAME par le nom du certificat cible.

Étapes suivantes