Ce tutoriel vous explique comment utiliser Certificate Manager pour déployer un certificat mondial géré par Google avec autorisation DNS.
Les équilibreurs de charge mondiaux suivants sont compatibles avec les certificats gérés par Google avec autorisation DNS :
- Équilibreur de charge d'application externe global
- Équilibreur de charge d'application classique
- Équilibreur de charge réseau proxy externe global
Si vous souhaitez déployer des équilibreurs de charge interrégionaux ou régionaux, consultez les ressources suivantes :
Créer un certificat géré par Google avec une autorisation DNS
Avant de créer le certificat, créez une zone DNS publique. Créez ensuite une autorisation DNS et ajoutez l'enregistrement CNAME à la zone DNS cible.
Créer une autorisation DNS
Une autorisation DNS ne couvre qu'un seul nom de domaine. Vous devez créer une autorisation DNS distincte pour chaque nom de domaine que vous souhaitez utiliser avec le certificat cible.
Si vous créez une autorisation DNS pour un certificat générique, tel que *.myorg.example.com
, configurez l'autorisation DNS pour le domaine parent (par exemple, myorg.example.com
).
Console
Vous pouvez créer une autorisation DNS ou en associer une existante lorsque vous créez un certificat. Pour en savoir plus, consultez Créer un certificat géré par Google faisant référence à l'autorisation DNS.
gcloud
Vous pouvez créer deux types d'autorisations DNS : FIXED_RECORD
ou PER_PROJECT_RECORD
. Pour en savoir plus, consultez Autorisation DNS.
Autorisation DNS FIXED_RECORD
Pour créer une autorisation DNS FIXED_RECORD
, utilisez la commande gcloud certificate-manager dns-authorizations create
suivante :
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type=[FIXED_RECORD]
Remplacez les éléments suivants :
AUTHORIZATION_NAME
: nom de l'autorisation DNS.DOMAIN_NAME
: nom du domaine cible pour lequel vous créez cette autorisation DNS. Le nom de domaine doit être un nom de domaine complet, tel quemyorg.example.com
.
Après avoir créé l'autorisation DNS FIXED_RECORD
, vérifiez-la à l'aide de la commande gcloud certificate-manager dns-authorizations describe
:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Le résultat renvoyé ressemble à ceci : Dans le résultat, recherchez la section dnsResourceRecord
. Localisez l'enregistrement CNAME
et ajoutez ses informations (data
, name
et type
) à votre configuration DNS.
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge.myorg.example.com. type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
Autorisation DNS PER_PROJECT_RECORD
Pour créer une autorisation DNS PER_PROJECT_RECORD
, utilisez la commande gcloud certificate-manager dns-authorizations create
suivante :
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type=PER_PROJECT_RECORD
Remplacez les éléments suivants :
AUTHORIZATION_NAME
: nom de l'autorisation DNS.DOMAIN_NAME
: nom du domaine cible pour lequel vous créez cette autorisation DNS. Le nom de domaine doit être un nom de domaine complet, tel quemyorg.example.com
.
Après avoir créé l'autorisation DNS PER_PROJECT_RECORD
, vérifiez-la à l'aide de la commande gcloud certificate-manager dns-authorizations describe
:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Le résultat renvoyé ressemble à ceci : Dans le résultat, recherchez la section dnsResourceRecord
. Localisez l'enregistrement CNAME
et ajoutez ses informations (data
, name
et type
) à votre configuration DNS.
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge_ujmmovf2vn55tgye.myorg.example.com type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
Terraform
Pour créer une autorisation DNS, vous pouvez utiliser une ressource google_certificate_manager_dns_authorization
.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
API
Pour créer une autorisation DNS, envoyez une requête POST
à la méthode dnsAuthorizations.create
:
POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME" { "domain": "DOMAIN_NAME", "type": "PER_PROJECT_RECORD" //optional }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet Google Cloud .AUTHORIZATION_NAME
: nom de l'autorisation DNS.DOMAIN_NAME
: nom du domaine cible pour lequel vous créez cette autorisation DNS. Le nom de domaine doit être un nom de domaine complet, tel quemyorg.example.com
.
Créer un certificat géré par Google faisant référence à l'autorisation DNS
Pour créer un certificat géré par Google qui référence l'autorisation DNS que vous avez créée lors des étapes précédentes, procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page Certificate Manager.
Dans l'onglet Certificats, cliquez sur Ajouter un certificat.
Dans le champ Nom du certificat, saisissez un nom unique pour le certificat.
Facultatif : Dans le champ Description, saisissez une description du certificat. La description vous permet d'identifier le certificat.
Dans Emplacement, sélectionnez Mondial.
Pour Champ d'application, sélectionnez Par défaut.
Dans le champ Type de certificat, sélectionnez Créer un certificat géré par Google.
Dans le champ Type d'autorité de certification, sélectionnez Publique.
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
. Le nom de domaine peut également être un nom de domaine générique, tel que*.example.com
.Pour Type d'autorisation, sélectionnez Autorisation DNS.
La page liste les autorisations DNS des noms de domaine. Si un nom de domaine n'est pas associé à une autorisation DNS, procédez comme suit pour en créer une :
- Cliquez sur Créer une autorisation DNS manquante.
- Dans le champ Nom de l'autorisation DNS, spécifiez le nom de l'autorisation DNS.
Le type d'autorisation DNS par défaut est
FIXED_RECORD
. Pour gérer indépendamment les certificats dans plusieurs projets, cochez la case Autorisation par projet. - Cliquez sur Créer une autorisation DNS.
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é.Cliquez sur Créer.
Le nouveau certificat apparaît dans la liste des certificats.
gcloud
Pour créer un certificat géré par Google global avec autorisation DNS, exécutez la commande certificate-manager certificates create
avec l'option dns-authorizations
:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAME,*.DOMAIN_NAME" \ --dns-authorizations="AUTHORIZATION_NAMES"
Remplacez les éléments suivants :
CERTIFICATE_NAME
: nom du certificat.DOMAIN_NAME
: nom du domaine cible. Le nom de domaine doit être un nom de domaine complet, tel quemyorg.example.com
, ou un domaine comportant des caractères génériques, tel que*.myorg.example.com
. Le préfixe point-astérisque(*.)
indique un certificat générique.AUTHORIZATION_NAMES
: liste des noms des autorisations DNS que vous avez créées pour le certificat, séparés par une virgule.
Terraform
Utilisez une ressource google_certificate_manager_certificate
.
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"], "dnsAuthorizations": [ "projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME", ], } }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet Google Cloud .CERTIFICATE_NAME
: nom du certificat.DOMAIN_NAME
: nom du domaine cible. Le nom de domaine doit être un nom de domaine complet, tel quemyorg.example.com
, ou un domaine comportant des caractères génériques, tel que*.myorg.example.com
. Le préfixe d'astérisque et de point (*.) indique un certificat générique.AUTHORIZATION_NAMES
: liste des noms des autorisations DNS, séparés par une virgule.
Ajouter l'enregistrement CNAME à votre configuration DNS
Si vous utilisez une solution DNS tierce pour gérer votre DNS, consultez sa documentation pour ajouter l'enregistrement CNAME à la configuration DNS. Si vous utilisezGoogle Cloud pour gérer votre DNS, suivez les étapes décrites dans cette section.
Console
Pour créer un jeu d'enregistrements, procédez comme suit :
Dans la console Google Cloud , accédez à la page Zones DNS.
Cliquez sur le nom de la zone DNS à laquelle vous souhaitez ajouter l'enregistrement.
Sur la page Détails de la zone, cliquez sur Ajouter un jeu d'enregistrements standard.
Sur la page Créer un jeu d'enregistrements, saisissez le sous-domaine de la zone DNS dans le champ Nom DNS.
Lorsque vous saisissez le nom du sous-domaine, assurez-vous qu'il correspond à la valeur complète du champ
dnsResourceRecord.name
affichée dans la sortie de la commandegcloud certificate-manager dns-authorizations describe
, y compris le texte grisé affiché dans le champ Nom DNS.Consultez les exemples suivants :
Si la valeur du champ
dnsResourceRecord.name
est_acme-challenge.myorg.example.com.
et que le texte grisé dans le champ Nom DNS est.example.com.
, saisissez_acme-challenge.myorg
.Si la valeur du champ
dnsResourceRecord.name
est_acme-challenge.myorg.example.com.
et que le texte grisé dans le champ Nom DNS est.myorg.example.com.
, saisissez_acme-challenge
.Si la valeur du champ
dnsResourceRecord.name
est_acme-challenge_ujmmovf2vn55tgye.myorg.example.com.
et que le texte grisé dans le champ Nom DNS est.myorg.example.com.
, saisissez_acme-challenge_ujmmovf2vn55tgye
.
Dans le champ Type d'enregistrement de la ressource, sélectionnez CNAME.
Dans le champ TTL, saisissez une valeur numérique positive correspondant à la durée de vie (Time To Live) de l'enregistrement de la ressource, c'est-à-dire le délai pendant lequel il peut être mis en cache.
Dans la liste Unité TTL, sélectionnez l'unité de temps (par exemple,
30 minutes
).Dans le champ Nom canonique, saisissez la valeur complète du champ
dnsResourceRecord.data
telle qu'elle s'affiche dans la sortie de la commandegcloud certificate-manager dns-authorizations describe
.Pour saisir des informations supplémentaires, cliquez sur Ajouter un élément.
Cliquez sur Créer.
gcloud
Lorsque vous créez une autorisation DNS, la commande gcloud CLI renvoie l'enregistrement CNAME correspondant. Pour ajouter l'enregistrement CNAME à votre configuration DNS dans la zone DNS du domaine cible, procédez comme suit :
Lancez la transaction d'enregistrement DNS :
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
Remplacez
DNS_ZONE_NAME
par le nom de la zone DNS cible.Ajoutez l'enregistrement CNAME à la zone DNS cible :
gcloud dns record-sets transaction add CNAME_RECORD \ --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"
Remplacez les éléments suivants :
CNAME_RECORD
: valeur de données complète de l'enregistrement CNAME renvoyé par la commande Google Cloud CLI qui a créé l'autorisation DNS correspondante.VALIDATION_SUBDOMAIN_NAME
: sous-domaine de préfixe de la zone DNS, tel que_acme-challenge
. Vous pouvez copier le nom à partir du journal des commandesgcloud certificate-manager dns-authorizations describe
, comme décrit dans Créer une autorisation DNS.DOMAIN_NAME
: nom du domaine cible.Il doit s'agir d'un nom de domaine complet, tel quemyorg.example.com
. Vous devez également inclure le point final après le nom de domaine cible.DNS_ZONE_NAME
: nom de la zone DNS cible.
Pour en savoir plus sur la différence entre les autorisations DNS
FIXED_RECORD
etPER_PROJECT_RECORD
, consultez les exemples suivants. La seule différence entre les deux exemples est la valeur du flag--name
.Autorisation DNS FIXED_RECORD
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"
Autorisation DNS PER_PROJECT_RECORD
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge_ujmmovf2vn55tgye.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"
Exécutez la transaction d'enregistrement DNS pour enregistrer vos modifications :
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
Remplacez
DNS_ZONE_NAME
par le nom de la zone DNS cible.
Terraform
Pour ajouter l'enregistrement CNAME à votre configuration DNS, vous pouvez utiliser une ressource google_dns_record_set
.
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
Dans la console Google Cloud , accédez à la page Certificate Manager.
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 dnsAuthorizations: - projects/myProject/locations/global/dnsAuthorizations/myCert 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
après plusieurs heures, vérifiez que vous avez correctement ajouté l'enregistrement CNAME
à votre configuration DNS.
Pour connaître la procédure de dépannage, consultez la section Dépannage du Gestionnaire de certificats.
Déployer le certificat sur un équilibreur de charge
Pour déployer un 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
.
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 certificats : une pourexample.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
.
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
.
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 du mappage de certificats, 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 le mappage de certificat 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.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans ce tutoriel ne soient facturées sur votre compte Google Cloud , supprimez-les.
Supprimez l'équilibreur de charge et ses ressources.
Consultez la section Nettoyer une configuration d'équilibrage de charge
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.
- 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.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.
Supprimez le mappage de certificat :
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
Remplacez
CERTIFICATE_MAP_NAME
par le nom du mappage de certificat.Supprimez le certificat géré par Google :
Console
Dans la console Google Cloud , accédez à la page Certificate Manager.
Dans l'onglet Certificats, cochez la case du certificat.
Cliquez sur Supprimer.
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.Supprimez l'autorisation DNS :
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
Remplacez
AUTHORIZATION_NAME
par le nom de l'autorisation DNS.