Déployer un certificat régional géré par Google avec une autorisation DNS

Ce tutoriel vous explique comment utiliser Certificate Manager pour déployer un certificat régional géré par Google avec autorisation DNS sur un équilibreur de charge d'application externe régional ou sur un équilibreur de charge d'application interne régional.

Si vous souhaitez déployer des équilibreurs de charge externes globaux ou des équilibreurs de charge interrégionaux, consultez les ressources suivantes :

Créer un certificat régional géré par Google

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

Pour les certificats régionaux gérés par Google, vous ne pouvez créer que le type d'autorisation DNS PER_PROJECT_RECORD.

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

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" \
    --location="LOCATION"

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 que myorg.example.com.
  • LOCATION : emplacement Google Cloud cible où vous créez l'autorisation DNS.

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'

API

Pour créer une autorisation DNS, envoyez une requête POST à la méthode dnsAuthorizations.create :

POST /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
  "domain": "DOMAIN_NAME",
  "type": "PER_PROJECT_RECORD"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud .
  • LOCATION : emplacement Google Cloud cible où vous créez l'autorisation DNS.
  • 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 que myorg.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

  1. Dans la console Google Cloud , accédez à la page Certificate Manager.

    Accéder au Gestionnaire de certificats

  2. Dans l'onglet Certificats, cliquez sur Ajouter un certificat.

  3. Dans le champ Nom du certificat, saisissez un nom unique pour le certificat.

  4. Facultatif : Dans le champ Description, saisissez une description du certificat. La description vous permet d'identifier le certificat.

  5. Pour l'Emplacement, sélectionnez Régional.

  6. Dans la liste Région, sélectionnez votre région.

  7. Dans le champ Type de certificat, sélectionnez Créer un certificat géré par Google.

  8. Dans le champ Type d'autorité de certification, sélectionnez Publique.

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

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

    1. Cliquez sur Créer une autorisation DNS manquante.
    2. Dans le champ Nom de l'autorisation DNS, spécifiez le nom de l'autorisation DNS.
    3. Cliquez sur Créer une autorisation DNS.
  11. 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é.

  12. Cliquez sur Créer.

    Le nouveau certificat apparaît dans la liste des certificats.

gcloud

Pour créer un certificat régional géré par Google avec une autorisation DNS, exécutez la commande certificate-manager certificates create avec les indicateurs dns-authorizations et location :

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME, *.DOMAIN_NAME" \
    --dns-authorizations="AUTHORIZATION_NAMES" \
    --location=LOCATION

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 que myorg.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.
  • LOCATION : emplacement Google Cloud cible.

API

Créez le certificat en envoyant une requête POST à la méthode certificates.create comme suit :

POST /v1/projects/PROJECT_ID/locations/LOCATION/certificates?certificate_id=CERTIFICATE_NAME
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "dnsAuthorizations": [
   "projects/PROJECT_ID/locations/LOCATION/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 que myorg.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.
  • LOCATION : emplacement Google Cloud cible.
  • 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 :

  1. Dans la console Google Cloud , accédez à la page Zones DNS.

    Accéder aux zones Cloud DNS

  2. Cliquez sur le nom de la zone DNS à laquelle vous souhaitez ajouter l'enregistrement.

  3. Sur la page Détails de la zone, cliquez sur Ajouter un jeu d'enregistrements standard.

  4. 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 commande gcloud 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.

  5. Dans le champ Type d'enregistrement de la ressource, sélectionnez CNAME.

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

  7. Dans la liste Unité TTL, sélectionnez l'unité de temps (par exemple, 30 minutes).

  8. Dans le champ Nom canonique, saisissez la valeur complète du champ dnsResourceRecord.data telle qu'elle s'affiche dans la sortie de la commande gcloud certificate-manager dns-authorizations describe.

  9. Pour saisir des informations supplémentaires, cliquez sur Ajouter un élément.

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

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

  2. 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 commandes gcloud 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 que myorg.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 et PER_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"
    
  3. 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.

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

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

  1. Dans la console Google Cloud , accédez à la page Certificate Manager.

    Accéder au Gestionnaire de certificats

  2. 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 \
    --location=LOCATION

Remplacez les éléments suivants :

  • CERTIFICATE_NAME : nom du certificat.
  • LOCATION : emplacement Google Cloud cible où vous avez créé le certificat géré par Google.

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/LOCATION/dnsAuthorizations/myCert
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/LOCATION/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 le certificat régional géré par Google sur un équilibreur de charge d'application externe régional ou un équilibreur de charge d'application interne régional, associez-le directement au proxy cible.

Associer le certificat directement au proxy cible

Vous pouvez associer le certificat à un nouveau proxy cible ou à un proxy cible existant.

Pour associer le certificat à un nouveau proxy cible, utilisez la commande gcloud compute target-https-proxies create :

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-manager-certificates=CERTIFICATE_NAME \
    --url-map=URL_MAP \
    --region=LOCATION

Remplacez les éléments suivants :

  • PROXY_NAME : nom du proxy cible.
  • CERTIFICATE_NAME : nom du certificat.
  • URL_MAP : nom du mappage d'URL. Vous avez créé le mappage d'URL lorsque vous avez créé l'équilibreur de charge.
  • LOCATION : emplacement Google Cloud cible où vous souhaitez créer le proxy HTTPS cible.

Pour associer un certificat à 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 \
    --region=LOCATION \
    --certificate-manager-certificates=CERTIFICATE_NAME

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

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce tutoriel ne soient facturées sur votre compte Google Cloud , supprimez-les.

  1. Supprimez l'équilibreur de charge et ses ressources.

    Consultez la section Nettoyer une configuration d'équilibrage de charge

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

    Console

    1. Dans la console Google Cloud , accédez à la page Certificate Manager.

      Accéder au Gestionnaire de certificats

    2. Dans l'onglet Certificats, cochez la case du certificat.

    3. Cliquez sur Supprimer.

    4. Dans la boîte de dialogue qui s'affiche, cliquez sur Supprimer pour confirmer.

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME \
        --location=LOCATION
    

    Remplacez les éléments suivants :

    • CERTIFICATE_NAME : nom du certificat.
    • LOCATION : emplacement Google Cloud cible.
  3. Supprimez l'autorisation DNS :

    gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
       --location=LOCATION
    

    Remplacez les éléments suivants :

    • AUTHORIZATION_NAME : nom de l'autorisation DNS.
    • LOCATION : emplacement Google Cloud cible où vous avez créé l'autorisation DNS.