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.

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.

Un certificat SSL est requis pour configurer certains types d'équilibreurs de charge Google Cloud, y compris :

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

Domaines multiples

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, 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.

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 Cloud Console, 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 de la page Équilibrage de charge.

  1. Accédez à l'onglet "Certificats" dans Google Cloud Console.
    Accéder à l'onglet "Certificats"
  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 HTTP(S) externe ou proxy SSL, exécutez la commande gcloud compute ssl-certificates create :

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

Remplacez les espaces réservés suivants par des valeurs valides :

  • 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

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 du certificat SSL géré par Google

Console

Vous pouvez vérifier l'état de vos certificats SSL globaux dans l'onglet Certificats de la page Équilibrage de charge.

  1. Accédez à la page Certificats dans Google Cloud Console.
    Accéder à la page "Certificats"
  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 HTTP(S) externe ou un équilibreur de charge proxy SSL à l'aide de Google Cloud Console, 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 HTTP(S) externe, 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 proxy SSL, 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 espaces réservés par des valeurs valides :

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 HTTPS externes :

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

Pour les équilibreurs de charge proxy SSL :

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 vos enregistrements DNS sont gérés, veillez à ajouter ou à mettre à jour les enregistrements DNS A (pour IPv4) et DNS AAAAA (pour IPv6) pour vos domaines et tous les sous-domaines.

Assurez-vous que les enregistrements pointent vers l'adresse IP associée aux règles de transfert de l'équilibreur de charge.

Si vous utilisez Cloud DNS et Google Domains, 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 pour tous les domaines et sous-domaines. Ils doivent tous pointer vers l'adresse IP de votre équilibreur de charge.

Une fois la propagation DNS terminée, 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:
;; flags: ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL:

;; PSEUDOSECTION:
; EDNS: version: 0, flags:; udp:
;; SECTION:
;www.example.com.

;; SECTION:
www.example.com.   www.example.com.edgekey.net.
www.example.com.edgekey.net.   www.example.com.edgekey.net.globalredir.akadns.net.
www.example.com.edgekey.net.globalredir.akadns.net.   e6858.dsce9.akamaiedge.net.
e6858.dsce9.akamaiedge.net.   203.0.113.5

;; time:
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 16:54:44
;;  rcvd: 31748 qr rd 1 OPT 512 QUESTION IN A ANSWER 1742 IN CNAME 21330 IN CNAME 3356 IN CNAME 212 IN A Query 43 msec Wed Jun 03 PDT 2020 MSG SIZE 193>

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

Réexécutez également la commande suivante :

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

Si l'état de votre domaine est FAILED_NOT_VISIBLE, 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.

Renouvellement de 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, 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.

Procédures facultatives

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

Dans votre logiciel de serveur DNS, spécifiez les autorités de certification que vous souhaitez autoriser pour émettre votre certificat géré par Google. 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 des certificats 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 de la page Équilibrage de charge.

  1. Accédez à la page Certificats dans Google Cloud Console.
    Accéder à la page "Certificats"
  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 proxy SSL ou HTTP(S) externes), exécutez gcloud compute ssl-certificates delete avec la commande --global :

gcloud compute ssl-certificates delete CERTIFICATE_NAME \
    --global

Remplacez les espaces réservés par des valeurs valides :

  • CERTIFICATE_NAME : nom du certificat SSL

Étape suivante