Utiliser des certificats SSL gérés par Google

Cette page explique comment créer et utiliser des certificats SSL gérés par Google pour Compute Engine.

Pour créer des certificats gérés par Google à l'aide du gestionnaire de certificats, consultez la section Présentation du déploiement.

Les certificats SSL gérés par Google sont des certificats de validation de domaine (DV) que Google Cloud obtient et gère pour vos domaines. Ils acceptent plusieurs noms d'hôte dans chaque certificat, et Google les renouvelle automatiquement.

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

  • Équilibreur de charge d'application externe global
  • Équilibreur de charge d'application classique
  • Équilibreur de charge réseau proxy externe (avec proxy SSL cible)

Les certificats SSL Compute Engine gérés par Google ne sont pas compatibles avec les équilibreurs de charge d'application externes régionaux, les équilibreurs de charge d'application internes régionaux ni les équilibreurs de charge d'application internes interrégionaux. Pour ces équilibreurs de charge, vous pouvez utiliser des certificats SSL Compute Engine autogérés ou envisager d'utiliser le gestionnaire de certificats à la place.

Vous pouvez également utiliser des certificats SSL gérés avec Google Kubernetes Engine. Pour en savoir plus, consultez la page Utiliser des certificats SSL gérés par Google.

Vous pouvez créer un certificat géré par Google avant, pendant ou après la création de votre équilibreur de charge. Cette page suppose que vous créez le certificat Compute Engine avant ou après la création de l'équilibreur de charge, mais pas pendant. Pour créer le certificat lors de la création de votre équilibreur de charge, consultez les procédures des guides pratiques sur les équilibreurs de charge.

Avant de commencer

Autorisations

Pour suivre ce guide, vous devez être en mesure de créer et modifier des certificats SSL dans votre projet. Pour ce faire, vous devez remplir l'une des conditions suivantes :

1. Créer un certificat SSL géré par Google

Vous pouvez créer un certificat géré par Google avant, pendant ou après la création de votre équilibreur de charge. Au cours du processus de création d'un équilibreur de charge dans la console Google Cloud, vous pouvez utiliser cet outil pour créer votre certificat. Vous pouvez également créer votre certificat avant ou après la création de votre équilibreur de charge. Cette étape vous montre comment créer un certificat que vous pourrez ensuite ajouter à un ou plusieurs équilibreurs de charge.

Si vous avez déjà créé votre certificat SSL géré par Google, vous pouvez ignorer cette étape.

Console

Vous pouvez utiliser des certificats SSL globaux dans l'onglet Certificats classiques de la page Gestionnaire de certificats.

  1. Accédez à l'onglet Certificats classiques dans la console Google Cloud.
    Accéder à l'onglet "Certificats classiques"
  2. Cliquez sur Créer un certificat SSL.
  3. Saisissez un nom et une description facultative pour le certificat.
  4. Sélectionnez Créer un certificat géré par Google.
  5. Ajoutez les domaines.
  6. Cliquez sur Créer.

gcloud

Afin de créer un certificat SSL global géré par Google pour un équilibreur de charge d'application externe global ou réseau proxy externe, utilisez la commande gcloud compute ssl-certificates create:

gcloud compute ssl-certificates create CERTIFICATE_NAME \
    --description=DESCRIPTION \
    --domains=DOMAIN_LIST \
    --global

Remplacez les éléments suivants :

  • CERTIFICATE_NAME : nom du certificat SSL global
  • DESCRIPTION : description du certificat SSL global
  • DOMAIN_LIST : nom de domaine unique ou liste des noms de domaine séparés par une virgule à utiliser pour ce certificat

Terraform

Pour créer le certificat SSL géré par Google, utilisez la ressource google_compute_managed_ssl_certificate.

resource "google_compute_managed_ssl_certificate" "lb_default" {
  provider = google-beta
  name     = "myservice-ssl-cert"

  managed {
    domains = ["example.com"]
  }
}

api

Créez la méthode de ressource de certificat gérée par Google sslCertificates.insert, en remplaçant PROJECT_ID par l'ID de votre projet.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/sslCertificates
{
  "name": "ssl-certificate-name",
  "managed": {
    "domains": [
      "www.example.com"
    ]
  },
  "type": "MANAGED"
}

Vérifier l'état d'un certificat SSL géré par Google

Console

Vous pouvez vérifier l'état de vos certificats SSL globaux dans l'onglet Certificats classiques de la page Gestionnaire de certificats.

  1. Accédez à l'onglet Certificats classiques dans la console Google Cloud.
    Accéder à l'onglet "Certificats classiques"
  2. (Facultatif) Filtrez la liste des certificats SSL.
  3. Vérifiez la colonne État.
  4. Pour afficher plus de détails, cliquez sur le nom du certificat.

gcloud

Pour déterminer l'état de votre certificat géré par Google, vous pouvez exécuter des commandes gcloud compute. Après l'exécution de la commande adéquate, veillez à prendre note des informations suivantes :

  • L'état géré.
  • L'état du domaine.

Pour répertorier vos certificats SSL gérés par Google, exécutez la commande gcloud compute ssl-certificates list avec l'option --global.

gcloud compute ssl-certificates list \
   --global

Vous pouvez utiliser la commande gcloud compute ssl-certificates describe en remplaçant CERTIFICATE_NAME :

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
   --global \
   --format="get(name,managed.status, managed.domainStatus)"

À ce stade, l'état du certificat et l'état du domaine affichent PROVISIONING. Une fois que vous aurez effectué la procédure sur cette page, les états seront remplacés par ACTIVE.

Pour plus d'informations sur les états, consultez la page de dépannage.

Étape 2 : Créer ou mettre à jour l'équilibreur de charge

Pour passer à l'état ACTIVE, le certificat SSL géré par Google doit être associé à un équilibreur de charge, à savoir son proxy cible.

Une fois que vous avez créé votre certificat SSL et qu'il est à l'état PROVISIONING, vous pouvez vous en servir lors de la création de votre équilibreur de charge, comme décrit dans les guides d'utilisation suivants :

Vous pouvez également l'utiliser pour mettre à jour un équilibreur de charge existant, comme décrit ici :

Console

Lorsque vous mettez à jour un équilibreur de charge d'application externe global ou un équilibreur de charge réseau proxy externe à l'aide de la console Google Cloud, Google Cloud associe automatiquement votre certificat SSL au proxy cible approprié.

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page "Équilibrage de charge"
  2. Cliquez sur le nom de votre équilibreur de charge.
  3. Cliquez sur Modifier .
  4. Cliquez sur Configuration du frontend.
  5. Cliquez sur l'interface adéquate (obligatoirement HTTPS, HTTP/2 ou SSL).
  6. Cliquez sur Certificats supplémentaires, puis sélectionnez votre certificat géré par Google dans la liste déroulante.
  7. Cliquez sur Créer.

gcloud

Pour associer un certificat SSL au proxy HTTPS cible pour un équilibreur de charge d'application externe global, exécutez la commande gcloud compute target-https-proxies update avec les options --global-ssl-certificates et --global :

gcloud compute target-https-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST \
    --global-ssl-certificates \
    --global

Pour associer un certificat SSL au proxy SSL cible d'un équilibreur de charge réseau proxy externe, exécutez la commande gcloud compute target-ssl-proxies update :

gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST

Remplacez les éléments suivants :

  • TARGET_PROXY_NAME : nom du proxy cible de l'équilibreur de charge
  • SSL_CERTIFICATE_LIST : liste de ressources de certificats SSL séparées par une virgule

    Assurez-vous que la liste des certificats référencés inclut tous les certificats SSL valides antérieurs, ainsi que le nouveau certificat SSL. La commande gcloud compute target-ssl-proxies update remplace les valeurs d'origine de --ssl-certificates par la nouvelle valeur.

Terraform

Pour créer le proxy HTTPS cible, utilisez la ressource google_compute_target_https_proxy.

Pour créer le proxy SSL cible, utilisez la ressource google_compute_target_ssl_proxy.

resource "google_compute_target_https_proxy" "lb_default" {
  provider = google-beta
  name     = "myservice-https-proxy"
  url_map  = google_compute_url_map.lb_default.id
  ssl_certificates = [
    google_compute_managed_ssl_certificate.lb_default.name
  ]
  depends_on = [
    google_compute_managed_ssl_certificate.lb_default
  ]
}

Chaque proxy HTTPS ou SSL cible doit référencer au moins un certificat SSL. Un proxy cible peut faire référence à plusieurs certificats SSL. Pour en savoir plus, consultez la section Pools cibles et proxys cibles dans la documentation sur les quotas et les limites des ressources d'équilibrage de charge.

Étape 3 : Vérifier l'association du proxy cible

Après avoir créé ou mis à jour votre équilibreur de charge, vous pouvez vérifier que le certificat SSL est associé au proxy cible de votre équilibreur de charge.

Si vous ne connaissez pas déjà le nom du proxy cible, utilisez les commandes gcloud compute target-https-proxies list et gcloud compute target-ssl-proxies list pour répertorier les proxys cibles dans votre projet.

Vérifiez l'association entre le certificat SSL et le proxy cible en exécutant la commande suivante.

Pour les équilibreurs de charge d'application externes globaux :

gcloud compute target-https-proxies describe TARGET_HTTPS_PROXY_NAME \
    --global \
    --format="get(sslCertificates)"

Pour les équilibreurs de charge réseau proxy externes :

gcloud compute target-ssl-proxies describe TARGET_SSL_PROXY_NAME \
    --format="get(sslCertificates)"

À ce stade, l'état de votre certificat géré par Google peut toujours être PROVISIONING. Google Cloud travaille avec l'autorité de certification pour émettre le certificat. Le provisionnement d'un certificat géré par Google peut prendre jusqu'à 60 minutes.

Étape 4 : Mettre à jour les enregistrements DNS A et AAAA pour pointer vers l'adresse IP de l'équilibreur de charge

Vos enregistrements DNS peuvent être gérés au niveau du site de votre bureau d'enregistrement, de votre hôte DNS ou de votre FAI.

Lorsque vous gérez vos enregistrements, tenez compte des points suivants :

  • Assurez-vous que les enregistrements DNS A (pour IPv4) et DNS AAAAA (pour IPv6) pour vos domaines et tous vos sous-domaines pointent vers l'adresse IP associée à la ou aux règles de transfert de l'équilibreur de charge.

    Pour provisionner des certificats SSL, assurez-vous que les enregistrements A et AAAA pointent vers l'adresse IP de l'équilibreur de charge dans un DNS public.

  • Si vous utilisez Cloud DNS, configurez vos domaines et mettez à jour vos serveurs de noms.

  • Si vous disposez de plusieurs domaines dans un certificat géré par Google, ajoutez ou mettez à jour les enregistrements DNS de tous les domaines et sous-domaines pour qu'ils pointent vers l'adresse IP de votre équilibreur de charge. La validation du certificat échoue si les domaines et sous-domaines d'un certificat géré par Google pointent vers une autre adresse IP que l'adresse IP de la règle de transfert de l'équilibreur de charge.

Les certificats gérés sont correctement provisionnés lorsque les conditions suivantes sont remplies :

  • Les enregistrements DNS de votre domaine utilisent un enregistrement CNAME qui pointe vers un autre domaine.
  • L'autre domaine contient un enregistrement A ou AAAA qui pointe vers l'adresse IP de votre équilibreur de charge.

Vous pouvez vérifier votre configuration en exécutant la commande dig. Par exemple, supposons que votre domaine soit www.example.com. Exécutez la commande dig suivante :

dig www.example.com
; <<>> DiG 9.10.6 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31748
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.example.com.           IN  A

;; ANSWER SECTION:
www.example.com. 1742    IN      CNAME   example.net.
example.net.      12     IN      A       34.95.64.10

;; Query time: 43 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jun 03 16:54:44 PDT 2020
;; MSG SIZE  rcvd: 193

Dans cet exemple, 34.95.64.10 correspond à l'adresse IP de votre équilibreur de charge.

Les résolveurs DNS sur Internet ne relèvent pas du contrôle de Google Cloud. Ils mettent en cache vos jeux d'enregistrements de ressources en fonction de leurs propres valeurs TTL (Time To Live), ce qui signifie qu'une commande dig ou nslookup peut renvoyer une valeur mise en cache. Si vous utilisez Cloud DNS, consultez la section Propagation des modifications.

Temps de propagation des enregistrements DNS

La propagation complète des enregistrements DNS A et AAAA récemment mis à jour peut prendre beaucoup de temps. La propagation sur Internet peut parfois prendre jusqu'à 72 heures dans le monde entier, même si cela prend généralement quelques heures.

Exécutez à nouveau la commande suivante :

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --format="get(managed.domainStatus)"

Si l'état de votre domaine est FAILED_NOT_VISIBLE, il est possible que la propagation ne soit pas terminée.

Pour en savoir plus, consultez la section État du domaine du certificat SSL géré par Google sur la page Dépannage.

Étape 5 : Effectuer un test avec OpenSSL

Une fois que l'état du certificat et du domaine est actif, votre équilibreur de charge peut prendre jusqu'à 30 minutes pour commencer à utiliser le certificat SSL géré par Google.

Pour effectuer un test, exécutez la commande OpenSSL suivante, en remplaçant DOMAIN par votre nom DNS et IP_ADDRESS par l'adresse IP de votre équilibreur de charge.

echo | openssl s_client -showcerts -servername DOMAIN -connect IP_ADDRESS:443 -verify 99 -verify_return_error

Cette commande génère les certificats que l'équilibreur de charge présente au client. Le résultat doit inclure la chaîne de certificats et Verify return code: 0 (ok) en plus d'autres informations détaillées.

Consignes supplémentaires

Cette section contient des procédures facultatives pour gérer vos certificats.

Prise en charge de plusieurs domaines avec un certificat SSL géré par Google

Plusieurs noms d'objets de remplacement sont acceptés. Chaque certificat SSL géré par Google accepte jusqu'au nombre maximal de domaines par certificat SSL géré par Google.

Si vous disposez d'un nombre de domaines supérieur à cette limite, vous devez demander plusieurs certificats gérés par Google. Par exemple, si vous essayez de créer un certificat géré par Google contenant un domaine de plus que le nombre maximal de domaines, Google ne délivre aucun certificat. Vous devez créer au moins deux certificats gérés par Google et indiquer explicitement les domaines associés à chaque certificat.

Google Cloud met en œuvre l'indication du nom du serveur, telle que définie dans la norme RFC 6066.

Si l'un des domaines ou sous-domaines d'un certificat géré ne pointe pas vers l'adresse IP de l'équilibreur de charge ou pointe vers une autre adresse IP en plus de celle de l'équilibreur de charge, le processus de renouvellement échoue. Pour éviter l'échec du renouvellement, assurez-vous que tous vos domaines et sous-domaines pointent vers l'adresse IP de l'équilibreur de charge.

Renouveler un certificat SSL géré par Google

Google Cloud provisionne des certificats gérés valides pour une durée de 90 jours. Environ un mois avant expiration, le processus de renouvellement du certificat commence automatiquement. À cette fin, une autorité de certification est choisie à la fois dans l'enregistrement DNS d'autorisation de l'autorité de certification (CAA) de votre domaine et dans la liste des autorités de certification.

L'autorité de certification utilisée pour le renouvellement peut être différente de l'autorité de certification utilisée afin d'émettre une version précédente de votre certificat géré par Google. Vous pouvez vérifier de quelle autorité de certification se sert Google Cloud lors du renouvellement. Pour cela, vous devez vous assurer que l'enregistrement DNS CAA de votre domaine utilise une autorité de certification unique issue de la liste approuvée pour les certificats gérés par Google.

Si l'un des domaines ou sous-domaines d'un certificat géré ne pointe pas vers l'adresse IP de l'équilibreur de charge ou pointe vers une autre adresse IP en plus de celle de l'équilibreur de charge, le processus de renouvellement échoue. Pour éviter l'échec du renouvellement, assurez-vous que tous vos domaines et sous-domaines pointent vers l'adresse IP de l'équilibreur de charge.

Spécifier les autorités de certification qui peuvent émettre un certificat géré par Google

Dans votre logiciel DNS, nous vous recommandons d'autoriser explicitement les autorités de certification que vous souhaitez autoriser à émettre votre certificat géré par Google. Bien que cela ne soit pas obligatoire dans tous les scénarios, cela est nécessaire dans certaines situations.

Par exemple, si vous utilisez un service DNS externe et que votre certificat géré par Google est révoqué, le service peut uniquement valider un nouveau certificat émis par une ou plusieurs autorités de certification spécifiques.

Pour ce faire, créez ou modifiez un enregistrement CAA pour inclure pki.goog, letsencrypt.org ou les deux. Si vous n'avez pas d'enregistrement CAA, le comportement par défaut consiste à autoriser à la fois pki.goog et letsencrypt.org.

DOMAIN. CAA 0 issue "pki.goog"
DOMAIN. CAA 0 issue "letsencrypt.org"

La compatibilité des certificats letsencrypt.org est fournie de la manière la plus optimale. Pour une meilleure fiabilité, autorisez à la fois pki.goog et letsencrypt.org. Si vous spécifiez une seule autorité de certification, celle-ci est utilisée pour créer et renouveler votre certificat : Cette approche n'est pas recommandée.

Lorsque vous créez votre certificat pour la première fois, Google Cloud sélectionne pki.goog ou letsencrypt.org et l'utilise pour émettre votre certificat. Lorsque Google renouvelle votre certificat, celui-ci peut être émis par l'autre autorité de certification, en fonction des autorités de certification que vous avez spécifiées dans l'enregistrement CAA (le cas échéant). Le certificat peut être renouvelé par une autre autorité de certification dans les cas suivants :

  • Vous n'avez pas d'enregistrement CAA DNS pour votre domaine.
  • Vous avez inclus les deux autorités de certification dans l'enregistrement CAA DNS.

Pour plus d'informations, reportez-vous au document RFC Enregistrement CAA DNS.

letsencrypt.org génère des noms de domaine internationalisés (IDN). pki.goog n'est actuellement pas compatible avec les IDN.

Si vous utilisez Cloud DNS, apprenez comment ajouter un enregistrement et assurez-vous de définir l'option --type sur CAA.

Remplacer un certificat SSL existant

Pour remplacer un certificat SSL existant, procédez comme suit :

  1. Démarrez le processus de création du certificat SSL de remplacement géré par Google. Le certificat ne devient pas actif à ce stade.

  2. Mettez à jour le proxy cible afin que la liste des certificats référencés comprenne le certificat SSL de remplacement ainsi que les certificats SSL actuels. Les étapes de mise à jour du proxy cible varient comme suit :

  3. Attendez que le certificat SSL de remplacement termine le provisionnement. Le provisionnement peut prendre jusqu'à 60 minutes. Une fois le provisionnement terminé, l'état du certificat passe à ACTIVE.

  4. Attendez 30 minutes de plus pour vous assurer que le certificat de remplacement est disponible pour tous les Google Front End (GFE).

  5. Mettez à jour le proxy cible pour supprimer le certificat SSL à remplacer de la liste des certificats référencés. Les étapes de mise à jour du proxy cible varient comme suit :

  6. Attendez 10 minutes et vérifiez que l'équilibreur de charge utilise le certificat SSL de remplacement au lieu de l'ancien.

  7. Mettez à nouveau à jour le proxy cible en supprimant l'ancienne ressource de certificat SSL. Vous pouvez supprimer la ressource de certificat SSL si elle n'est plus référencée par un proxy cible.

Si vous ne supprimez pas l'ancien certificat SSL, il reste actif jusqu'à son expiration.

Migrer des certificats SSL autogérés vers des certificats SSL gérés par Google

Lorsque vous migrez un équilibreur de charge pour qu'il utilise des certificats SSL gérés par Google au lieu de certificats SSL autogérés, procédez comme suit dans l'ordre indiqué :

  1. Créez un certificat géré par Google.
  2. Associez le nouveau certificat géré par Google au proxy cible adéquat, tout en conservant l'association du proxy cible au certificat autogéré existant.
  3. Attendez que le certificat géré par Google passe à l'état ACTIVE.
  4. Attendez 30 minutes que le nouveau certificat Google se propage aux GFE en charge de la diffusion.
  5. Mettez à nouveau à jour le proxy cible en supprimant la ressource de certificat autogéré. Vous pouvez supprimer la ressource de certificat SSL autogéré si elle n'est plus référencée par un proxy cible.

Supprimer un certificat SSL

Avant de supprimer un certificat SSL, assurez-vous qu'aucun proxy cible HTTPS ou SSL ne fait référence à ce certificat. Pour cela, vous avez le choix entre deux méthodes :

Pour supprimer un ou plusieurs certificats SSL, procédez comme suit :

Console

Vous pouvez supprimer des certificats SSL globaux dans l'onglet Certificats classiques de la page Gestionnaire de certificats.

  1. Accédez à l'onglet Certificats classiques dans la console Google Cloud.
    Accéder à l'onglet "Certificats classiques"
  2. Sélectionnez le certificat SSL que vous souhaitez supprimer.
  3. Cliquez sur Supprimer.
  4. Pour confirmer, cliquez de nouveau sur Supprimer.

gcloud

Pour supprimer un certificat SSL global (pour les équilibreurs de charge d'application externes ou réseau proxy externes), exécutez gcloud compute ssl-certificates delete avec la commande --global :

gcloud compute ssl-certificates delete CERTIFICATE_NAME \
    --global

Remplacez les éléments suivants :

  • CERTIFICATE_NAME : nom du certificat SSL

Étapes suivantes