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 que Google Cloud obtient et gère pour vos domaines. Ils sont renouvelés automatiquement. Il s'agit de certificats de validation de domaine. Chaque certificat peut gérer plusieurs noms d'hôte.

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.

Lorsque Google renouvelle un certificat géré comportant plusieurs domaines, si l'un des domaines ou sous-domaines ne pointe pas vers l'adresse IP de l'équilibreur de charge, le processus de renouvellement échoue. Une fois le certificat géré provisionné, assurez-vous que tous vos domaines et sous-domaines pointent toujours vers l'adresse IP de l'équilibreur de charge afin d'éviter l'échec du renouvellement.

Avant de commencer

Permissions

Pour suivre ce guide, vous devez être autorisé à créer et à modifier des certificats SSL dans le projet. Vous disposez de cette autorisation si l'un des rôles ou autorisations suivants vous est attribué :

  • Vous êtes propriétaire ou éditeur du projet.
  • Vous possédez le rôle compute.loadBalancerAdmin dans le projet ou vous possédez les rôles compute.securityAdmin et compute.networkAdmin dans le projet.
  • Vous disposez d'un rôle personnalisé pour le projet qui inclut les autorisations compute.sslCertificates.* et au moins un des rôles compute.targetHttpsProxies.* et compute.targetSslProxies.*, selon le type d'équilibreur de charge que vous utilisez.

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

Utilisez la commande gcloud compute ssl-certificates create pour créer un certificat SSL global géré par Google pour un équilibreur de charge HTTP(S) externe ou un équilibreur de charge proxy SSL :

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

Utilisez les commandes gcloud compute pour déterminer l'état de votre certificat géré par Google. 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. Ces états passent à l'état ACTIVE une fois que vous avez terminé toutes les étapes de cette page.

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 passé à l'état PROVISIONING, vous pouvez l'utiliser lors de la création de votre équilibreur de charge, comme décrit dans les guides pratiques 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 :

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

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

Accédez au site dans lequel vous gérez vos enregistrement DNS (bureau d'enregistrement, hôte DNS ou FAI), puis ajoutez ou mettez à jour les enregistrements DNS de vos domaines et sous-domaines (DNS A pour IPv4, DNS AAAA pour IPv6) afin qu'ils pointent vers l'adresse IP associée à la règle ou 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 utilisez plusieurs domaines pour un même certificat géré par Google, vous devez ajouter ou mettre à jour les enregistrements DNS de tous les domaines et sous-domaines afin qu'ils pointent tous 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: 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   www.example.com.edgekey.net.
www.example.com.edgekey.net. 21330 IN   CNAME   www.example.com.edgekey.net.globalredir.akadns.net.
www.example.com.edgekey.net.globalredir.akadns.net. 3356 IN CNAME   e6858.dsce9.akamaiedge.net.
e6858.dsce9.akamaiedge.net. 212 IN  A   203.0.113.5

;; 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, 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. Pour ce faire, une autorité de certification (CA), à la fois dans l'enregistrement DNS d'autorisation pour l'autorité de certification (CAA) de votre domaine et dans la liste des autorités de certification, est choisie.

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 (autorisation provenant d'une autorité de certification) de votre domaine utilise une autorité de certification unique issue de la liste approuvée pour les certificats gérés par Google.

Lorsque Google renouvelle un certificat géré comportant plusieurs domaines, si l'un des domaines ou sous-domaines ne pointe pas vers l'adresse IP de l'équilibreur de charge, le processus de renouvellement échoue. Une fois le certificat géré provisionné, assurez-vous que tous vos domaines et sous-domaines pointent toujours vers l'adresse IP de l'équilibreur de charge afin d'éviter l'échec du renouvellement.

Procédures facultatives

Spécifier les autorités de certification autorisées à é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, consultez le document RFC Enregistrement DNS d'autorisation pour l'autorité de certification (CAA) (en anglais).

Les noms de domaine internationalisés (IDN) sont délivrés par letsencrypt.org. Ils ne sont actuellement pas compatible avec pki.goog.

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. Notez que ce certificat ne deviendra 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. Cette opération peut prendre jusqu'à 60 minutes. Une fois le provisionnement terminé, l'état du certificat devient 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. Vous pouvez éventuellement supprimer l'ancienne ressource de certificat SSL.

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 le certificat autogéré.

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