Configurer des certificats SSL (TLS)

Après avoir créé un service Media CDN (ou plusieurs services), vous pouvez émettre et associer des certificats SSL (TLS) pour assurer une connectivité sécurisée dans les navigateurs et les applications mobiles.

Émettre un certificat géré

Pour créer un certificat géré et l'associer à votre service Media CDN, procédez comme suit :

  1. Démontrez la propriété ("autorisation") des domaines pour lesquels vous souhaitez émettre des certificats en créant un jeton d'authentification et en ajoutant un enregistrement DNS.
  2. Créez un certificat de type EDGE_CACHE avec un ou plusieurs noms de domaine basés sur cette autorisation.
  3. Associez ce certificat à un ou plusieurs services de cache périphérique.

Vous devez disposer des autorisations IAM (Identity and Access Management) suivantes pour autoriser, créer et associer des certificats à un service de cache périphérique :

  • certificatemanager.certs.create
  • certificatemanager.certs.get
  • certificatemanager.certs.list
  • certificatemanager.certs.use
  • certificatemanager.dnsauthorizations.create
  • certificatemanager.dnsauthorizations.get
  • certificatemanager.dnsauthorizations.list
  • certificatemanager.dnsauthorizations.use

Utilisateurs qui doivent joindre un certificat existant à un Media CDN nécessitent l'certificatemanager.certs.get, certificatemanager.certs.list et certificatemanager.certs.use Autorisations IAM.

Avant de commencer

  • Vous devez disposer d'un nom de domaine enregistré sur lequel vous pouvez mettre à jour les enregistrements DNS publics.
  • Consultez la présentation des certificats SSL.

Créer une autorisation DNS

Tout d'abord, vous devez créer une autorisation DNS pour démontrer la propriété du domaine avant de pouvoir émettre des certificats pour celui-ci. L'autorisation DNS utilise le protocole DNS-01 ACME et vous permet d'émettre un certificat avant de diriger le trafic utilisateur à votre service de mise en cache périphérique.

Définissez la valeur de domain sur le nom de domaine pour lequel vous souhaitez créer un certificat, comme suit :

gcloud

Exécutez la commande gcloud certificate-manager dns-authorizations :

gcloud certificate-manager dns-authorizations create DOMAIN_NAME_AUTH \
    --domain="DOMAIN_NAME"
gcloud certificate-manager dns-authorizations describe DOMAIN_NAME_AUTH

gcloud CLI renvoie une réponse avec les détails de l'enregistrement DNS que vous devez ajouter.

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge.example.com.
  type: CNAME
domain: example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

Terraform

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "example-dns-auth"
  description = "example dns authorization "
  domain      = "test.example.com"
}

Si vous utilisez Cloud DNS pour votre domaine, consultez les étapes pour ajouter un enregistrement à votre domaine hébergé. Si vous utilisez un autre fournisseur DNS, consultez sa documentation pour ajouter un enregistrement CNAME.

  • Vous pouvez répéter cette étape pour chaque domaine pour lequel vous devez émettre un certificat.
  • Les certificats peuvent contenir plusieurs domaines, ou vous pouvez choisir d'émettre un certificat par domaine, si nécessaire. Une fois que vous disposez d'une autorisation pour un domaine, vous pouvez l'utiliser pour émettre des certificats.
  • Nous vous recommandons de créer moins de certificats, en incluant dans chaque certificat tous les noms de domaine utilisés pour votre service. Cela améliore les performances des clients lors de l'utilisation de plusieurs domaines, car les clients peuvent plus souvent bénéficier de la reprise TLS.
  • Chaque service de cache périphérique peut référencer jusqu'à cinq certificats. En limitant le nombre de certificats, vous pouvez respecter cette limite.

Si vous devez récupérer les valeurs de l'enregistrement DNS à une date ultérieure, envoyez une requête pour la valeur authorizationName que vous avez fourni lors de la création de l'autorisation DNS :

Créer un certificat

Une fois que vous avez ajouté l'enregistrement DNS prouvant que vous êtes propriétaire du ou des domaines pour lesquels vous souhaitez créer un certificat, vous pouvez envoyer une requête de création de certificat.

La liste des autorisations dnsAuthorizations doit correspondre aux noms des autorisations existantes que vous avez créées précédemment. Si vous souhaitez ajouter plusieurs domaines au même certificat, fournissez une liste de domains[] ainsi que les dnsAuthorizations[] correspondantes lors de l'envoi de la requête.

Pour créer un certificat à l'aide d'une autorisation pour test.example.com appelée test-example-com, procédez comme suit :

gcloud

Exécutez la commande gcloud certificate-manager certificates :

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME" \
    --dns-authorizations="DOMAIN_NAME_AUTH" \
    --scope=EDGE_CACHE

Cela crée un certificat avec chaque autorisation DNS à l'état AUTHORIZING et le certificat à l'état PROVISIONING :

Create request issued for: [DOMAIN_NAME]
Waiting for operation [projects/my-project/locations/global/operations/operatio
n-1613425627385-5bb66ed644e91-3e2a2f1f-71979cf8] to complete...done.
Created certificate [CERTIFICATE_NAME].

Terraform

resource "google_certificate_manager_certificate" "default" {
  name        = "example-dns-cert"
  description = "example dns certificate"
  scope       = "EDGE_CACHE"
  managed {
    domains = [
      google_certificate_manager_dns_authorization.default.domain,
    ]
    dns_authorizations = [
      google_certificate_manager_dns_authorization.default.id,
    ]
  }
}

La création du certificat peut prendre quelques minutes (et jusqu'à une heure), en fonction des éléments suivants :

  • La vitesse à laquelle votre fournisseur DNS propage les modifications de configuration.
  • Le nombre de domaines que vous essayez de valider pour créer des certificats.

Le champ state indique l'état actuel du certificat :

  • PROVISIONING : le certificat est toujours en cours de provisionnement. Cela est probablement dû au fait que la demande de création de certificat n'a été effectuée que récemment.
  • FAILED : renvoyé après plusieurs tentatives pour valider le domaine ou émettre le certificat. Pour en savoir plus, consultez les champs provisioning_issue, authorization_attempt_info et failure_reason.
  • ACTIVE : le domaine a bien été validé et le certificat a été provisionné.

Pour vérifier l'état du certificat :

gcloud

Exécutez la commande gcloud certificate-manager certificates :

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Dans cet exemple, l'autorisation DNS est AUTHORIZED et l'état du certificat est ACTIVE :

createTime: '2021-02-07T20:03:39.867762684Z'
expireTime: '2021-03-09T19:20:41Z'
managed:
  authorizationAttemptInfo:
  - domain: DOMAIN_NAME
    state: AUTHORIZED
  dnsAuthorizations:
  - projects/111111111111/locations/global/dnsAuthorizations/test-example-com
  domains:
  - DOMAIN_NAME
  state: ACTIVE
name: projects/my-project/locations/global/certificates/test-example-com
scope: EDGE_CACHE
subjectAlternativeNames:
- DOMAIN_NAME
updateTime: '2021-02-07T20:03:40.297242738Z'

Une fois le certificat ACTIVE, vous pouvez l'associer à un service de cache périphérique.

Associer un certificat à un service

Une fois que vous avez créé un certificat géré, vous pouvez l'associer à un ou plusieurs de vos services de cache périphérique. Les certificats peuvent être associés à des services existants et nouveaux en mettant à jour la liste des edgeSslCertificates dans le service.

Vous devez disposer des autorisations IAM suivantes pour associer des certificats à un service de cache périphérique :

  • certificatemanager.certs.get
  • certificatemanager.certs.list
  • certificatemanager.certs.use
  • networkservices.edgeCacheServices.get
  • networkservices.edgeCacheServices.list
  • networkservices.edgeCacheServices.update

Pour associer un certificat à un service, procédez comme suit :

gcloud

Exécutez la commande gcloud edge-cache services export pour exporter le fichier YAML de votre service :

gcloud edge-cache services export MY_SERVICE \
    --destination=my-service.yaml

Modifiez le fichier YAML exporté pour ajouter votre certificat :

name: MY_SERVICE
edgeSslCertificates:
- projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Exécutez la commande gcloud edge-cache services import :

gcloud edge-cache services import MY_SERVICE \
    --source=my-service.yaml

Output:

Request issued for: [MY_SERVICE]
Updated service [MY_SERVICE]

La commande renvoie une description de votre service, y compris la liste des edgeSslCertificates maintenant associés :

  name: MY_SERVICE
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Une fois la configuration mise à jour, le certificat se propage à tous les emplacements périphériques en quelques minutes. Pour vérifier que le certificat est associé à votre service de cache périphérique avant d'effectuer les modifications DNS, vous pouvez envoyer une requête à l'adresse IPv4 ou IPv6 associée à votre service.

Remplacer et supprimer des certificats

Vous pouvez ajouter et supprimer des certificats en mettant à jour la liste des certificats.

Lorsque vous utilisez l'option --edge-ssl-certificate de gcloud CLI, les certificats sont uniquement ajoutés à la liste des certificats existants et ne sont pas remplacés. Cela vous évite de supprimer accidentellement un certificat valide et actif.

Pour supprimer le certificat test-example-com de notre service dans l'exemple suivant, vous pouvez exporter votre service vers YAML à l'aide des commandes d'importation et d'exportation.

  name: my-service
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/test-example-com
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Les commandes suivantes montrent comment exporter le service, supprimer la référence de certificat et importer le service mis à jour.

gcloud

Exécutez la commande gcloud edge-cache services :

gcloud edge-cache services export MY_SERVICE --destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/MY_SERVICE] to 'my-service.yaml'.

Supprimez les certificats que vous ne souhaitez plus que le service utilise en utilisant votre éditeur de texte préféré :

  name: MY_SERVICE
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Enregistrez le fichier modifié, puis importez le service mis à jour :

gcloud

Exécutez la commande gcloud edge-cache services :

gcloud edge-cache services import MY_SERVICE --source=my-service.yaml
Request issued for: [MY_SERVICE]
Updated service [MY_SERVICE].

Il n'y a pas de limite au nombre de services auxquels un certificat peut être associé, et chaque service de cache périphérique peut référencer jusqu'à cinq certificats.

Certificats autogérés

Vous pouvez importer vos propres certificats dans Media CDN si vous avez des cas d'utilisation spécifiques qui le nécessitent.

Pour importer un certificat et sa clé associée dans le gestionnaire de certificats, procédez comme suit :

gcloud

Exécutez la commande gcloud certificate-manager certificates. Assurez-vous de spécifier --scope=EDGE_CACHE pour les certificats associés à Media CDN.

gcloud certificate-manager certificates create stream-example-com \
    --certificate-file=CERT.pem \
    --private-key-file=PRIVATE_KEY.pem \
    --scope=EDGE_CACHE
Create request issued for: [stream-example-com]
Created certificate [stream-example-com].

Une fois le certificat importé, vous pouvez l'associer à un EdgeCacheService comme vous le feriez pour un certificat géré.

Résoudre les problèmes d'émission de certificats

Consultez le guide de dépannage pour savoir comment résoudre les erreurs courantes d'autorisation et d'émission de certificats.

Étapes suivantes