Déployer un certificat mondial géré par Google avec l'autorisation de l'équilibreur de charge


Ce tutoriel vous explique le processus de déploiement de certificats à l'aide d'un certificat géré par Google avec l'autorisation de l'équilibreur de charge à titre d'exemple.

Pour comparer les types d'autorisation de domaine acceptés, consultez la section Autorisation de domaine.

Les équilibreurs de charge suivants acceptent les certificats gérés par Google avec autorisation de l'équilibreur de charge:

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

Si vous souhaitez migrer un certificat existant vers le gestionnaire de certificats, suivez plutôt la procédure décrite dans Migrer des certificats vers le gestionnaire de certificats.

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 publiquement approuvée, avec autorisation d'é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.

Pour en savoir plus sur le processus de déploiement de certificats, consultez la section Présentation du déploiement.

Si vous suivez les étapes de ce tutoriel pour déployer un certificat pour un domaine qui diffuse déjà du trafic de production, n'oubliez pas que le trafic pour ce domaine sera interrompu pendant le provisionnement et l'activation du certificat sur l'équilibreur de charge correspondant.

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

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

    • Propriétaire du gestionnaire de certificats: nécessaire pour créer et gérer les ressources du gestionnaire de certificats.
    • Administrateur de l'équilibreur de charge Compute ou Administrateur de réseaux Compute: nécessaire pour créer et gérer un proxy cible HTTPS.
    • Administrateur DNS: obligatoire si vous souhaitez utiliser Cloud DNS comme solution DNS.

    Pour en savoir plus, consultez les ressources suivantes :

Créer un certificat géré par Google avec l'autorisation de l'équilibreur de charge

Pour créer un certificat géré par Google avec une autorisation d'équilibreur de charge, procédez comme indiqué dans cette section.

Pour spécifier plusieurs noms de domaine pour le certificat, fournissez une liste de noms de domaine cibles séparés par une virgule.

Pour en savoir plus, consultez la section Autorisations et rôles.

gcloud

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

Remplacez les éléments suivants :

  • CERTIFICATE_NAME: nom unique du certificat.
  • DOMAIN_NAMES: liste des domaines cibles de ce certificat, séparés par une virgule. Chaque nom de domaine doit être un nom de domaine complet, par exemple 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 la page 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 cible.
  • CERTIFICATE_NAME: nom unique décrivant ce certificat.
  • DOMAIN_NAME: domaine cible de ce certificat. Le nom de domaine doit être un nom de domaine complet, tel que myorg.example.com.

Pour en savoir plus sur le processus de déploiement de certificats, consultez la section Présentation du déploiement.

Déployer le certificat sur un équilibreur de charge

Suivez les étapes décrites dans cette section pour déployer le certificat géré par Google que vous avez créé au cours des étapes précédentes sur un équilibreur de charge.

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

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Remplacez CERTIFICATE_MAP_NAME par le nom du mappage de certificats cible.

Terraform

Utilisez une ressource google_certificate_manager_certificate_map.

resource "google_certificate_manager_certificate_map" "default" {
  name        = "${local.name}-certmap1-${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 certificats.

gcloud

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 unique de l'entrée de mappage de certificat
  • 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 à cette entrée de mappage de certificat.
  • HOSTNAME: nom d'hôte que vous souhaitez associer à cette entrée de mappage de certificat

Terraform

Utilisez une ressource google_certificate_manager_certificate_map_entry.

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

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

Exécutez la commande suivante pour vérifier que l'entrée de mappage de certificat est active avant d'associer le mappage de certificat correspondant au proxy cible 

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 cible
  • CERTIFICATE_MAP_NAME: nom du mappage de certificat auquel cette entrée de mappage de certificat est associée

La commande renvoie un résultat semblable à celui-ci :

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

Associer le mappage de certificat au proxy cible

Associez le mappage de certificat configuré au proxy cible souhaité.

Console

  1. Dans la console Google Cloud, accédez à la page Proxys cibles.

Accéder à la page "Proxys cibles"

  1. Notez le nom du proxy cible.

  2. Associez le mappage de certificat au proxy cible:

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

Remplacez les éléments suivants :

*   `PROXY_NAME`: the name of the target proxy
*   `CERTIFICATE_MAP_NAME`: the name of the certificate
    map referencing your certificate map entry and its associated
    certificate

Terraform

Utilisez une ressource google_compute_target_https_proxy.

resource "google_compute_target_https_proxy" "default" {
  name            = "test-proxy"
  certificate_map = "//certificatemanager.googleapis.com/${google_certificate_manager_certificate_map.default.id}"
  url_map         = google_compute_url_map.default.id
}

Si des certificats TLS (SSL) existants sont associés directement au proxy, celui-ci donne la priorité aux certificats référencés par le mappage de certificats par rapport aux certificats TLS (SSL) directement associés.

Attendre l'activation du certificat

Une fois le certificat joint au proxy cible, son émission et son changement d'état peuvent prendre jusqu'à plusieurs heures.ACTIVE Lorsque l'état indique ACTIVE, il peut s'écouler jusqu'à 30 minutes avant que l'équilibreur de charge commence à utiliser le certificat.

Utilisez la commande suivante pour vérifier l'état du certificat:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

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

La commande renvoie un résultat semblable à celui-ci :

certificatePem: myPEM
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
scope: myScope
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Si l'état du certificat n'est pas passé à ACTIVE après plusieurs heures, vérifiez les points suivants:

Pour découvrir d'autres étapes de dépannage, consultez la page Résoudre les problèmes liés aux certificats SSL.

Effectuer un nettoyage

Pour annuler les modifications effectuées dans ce tutoriel, procédez comme suit:

  1. Dissociez le mappage de certificat du proxy.

    Avant de dissocier le mappage de certificat, tenez compte des points suivants:

    • Si des certificats TLS (SSL) sont associés directement au proxy, la dissociation du mappage de certificat entraîne la réactivation du proxy pour l'utilisation de ces certificats TLS (SSL) directement associés.
    • Si aucun certificat TLS (SSL) n'est associé directement au proxy, le mappage de certificat ne peut pas être dissocié du proxy. Vous devez d'abord associer au moins un certificat TLS (SSL) directement 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
    
  2. 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 cible
    • CERTIFICATE_MAP_NAME: nom du mappage de certificats cible
  3. Supprimez le mappage de certificat:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Remplacez CERTIFICATE_MAP_NAME par le nom du mappage de certificats cible.

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

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Remplacez CERTIFICATE_NAME par le nom du certificat cible.

Étapes suivantes