Exemple de récupération des identifiants TLS

Ce sujet est fourni à titre d'exemple uniquement. Il explique comment obtenir un certificat TLS auprès de l'autorité de certification Let's Encrypt. Ces étapes sont principalement fournies à titre d'exemple si vous ne disposez pas d'un autre moyen prêt à obtenir une paire certificat/clé autorisée par une autorité de certification. L'exemple montre comment générer des certificats à l'aide de l'autorité de certification Let's Encrypt, du client Certbot et du service Cloud DNS de Google Cloud Platform.

Où vous pouvez utiliser ces identifiants

Vous devez fournir des identifiants TLS pour deux passerelles d'entrée Istio exposées en dehors du cluster :

Passerelle Exigence TLS
Passerelle d'entrée MART Nécessite une paire de certificats/clés TLS autorisée.
Passerelle d'entrée de l'environnement d'exécution Vous pouvez utiliser une paire certificat/clé autosignée ou des identifiants TLS autorisés.
Consultez également la section Connexions externes.

Exigences

Vous aurez besoin d'un nom de domaine obtenu via un service d'enregistrement de noms de domaine. Vous pouvez enregistrer un nom de domaine via Google Domains ou un autre service d'enregistrement de votre choix.

Configurer Cloud DNS

Pour obtenir des identifiants TLS autorisés, vous devez disposer d'un nom de domaine qualifié. La procédure suivante explique comment utiliser Google Cloud DNS pour obtenir un nom de domaine et gérer vos serveurs de domaine.
  1. Ouvrez Google Cloud Console, puis connectez-vous avec le compte que vous avez créé à l'étape 1 : Créer un compte Google Cloud.
  2. Sélectionnez le projet que vous avez créé à l'Étape 2 : Créer un projet GCP.
  3. Activez l'API Cloud DNS. Voir Activation des API.
  4. Créez deux adresses IP statiques :
    • Si vous utilisez GKE, suivez les instructions de la section Réserver une adresse IP externe statique pour créer deux adresses IP statiques. Vous pouvez donner aux adresses le nom de votre choix, par exemple : apigee-hybrid-mart et apigee-hybrid-runtime. Lorsque vous avez terminé, vous aurez deux numéros IP à utiliser dans la configuration du cluster à l'étape suivante. Par exemple, 35.225.131.189 et 34.66.75.196
    • Si vous utilisez Anthos GKE, suivez les instructions de la documentation Anthos GKE pour créer deux adresses IP statiques.
  5. Créer une zone gérée publique Pour obtenir des instructions, consultez la page Créer une zone publique gérée.
  6. Obtenez l'adresse IP externe que vous avez réservée pour apigee-hybrid-mart.
  7. Créez un jeu d'enregistrements pour le point de terminaison MART. Saisissez l'adresse IP externe obtenue à l'étape précédente et ajoutez un préfixe au nom de domaine, tel que mart. Pour obtenir des instructions, consultez l'article Créer un enregistrement.

  8. Obtenez l'adresse IP externe que vous avez réservée pour apigee-hybrid-runtime.
  9. Créez un jeu d'enregistrements pour le point de terminaison d'entrée Istio. Il s'agit de l'adresse permettant d'effectuer des appels d'API vers la passerelle hybride. Saisissez l'adresse IP externe obtenue à l'étape précédente et ajoutez un préfixe au nom de domaine, tel que apitest. Pour obtenir des instructions, consultez l'article Créer un enregistrement.

  10. Copiez les données d'enregistrement DNS, comme indiqué dans l'exemple suivant :

  11. Revenez à la page de votre domaine sur Google Domains.
  12. Sélectionnez votre domaine.
  13. Sélectionnez DNS.
  14. Dans la section "Serveurs de noms", cliquez sur Modifier.
  15. Saisissez les serveurs de noms de domaine que vous avez copiés depuis la page Cloud Services DNS :

Votre Google Cloud DNS gère désormais les enregistrements DNS pour votre domaine.

Installer Certbot sur une VM

Maintenant que Cloud DNS est configuré pour gérer vos serveurs de domaine, vous allez installer le client Certbot avec le plug-in dns_google sur une VM Cloud. Le client vous permet d'obtenir des certificats autorisés pour votre domaine à partir d'un point de terminaison Let's Encrypt.

  1. Ouvrez Google Cloud Console, puis connectez-vous avec le compte que vous avez créé à l'étape 1 : Créer un compte Google Cloud.
  2. Sélectionnez le projet que vous avez créé à l'Étape 2 : Créer un projet GCP.
  3. Sélectionnez IAM et administration > Comptes de service.

    La vue des comptes de service affiche la liste des comptes de service du projet.

  4. Pour créer un compte de service, cliquez sur + Créer un compte de service en haut de la vue.

    La vue Détails du compte de service s'affiche.

  5. Dans le champ Nom du compte de service, saisissez le nom du compte de service.

    Vous pouvez éventuellement ajouter une description dans le champ Description du compte de service. Les descriptions sont utiles pour vous rappeler quel compte de service particulier est utilisé.

  6. Cliquez sur Créer.

    GCP crée un compte de service et affiche la vue Autorisations de compte de service. Utilisez cette vue pour attribuer un rôle à votre nouveau compte de service.

  7. Cliquez sur la liste déroulante Sélectionner un rôle.
  8. Sélectionnez le rôle Propriétaire du projet.
  9. Cliquez sur Continuer.
  10. Cliquez sur OK.
  11. Dans la console GCP, sélectionnez Compute Engine > Instances de VM.
  12. Créez une instance de VM nommée certmanager :
  13. Dans la section Disque de démarrage, choisissez CentOS7 et 20 Go pour le disque persistant SSD.
  14. Définissez le compte de service sur celui que vous avez créé ci-dessus.
  15. Installez certbot et le plug-in dns_google sur la machine, puis exécutez le client certbot :
      sudo su -
      yum -y install yum-utils
      yum install certbot -y
      yum install certbot-dns-google -y
      certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
      

    Exemple :

    sudo su -
    yum -y install yum-utils
    yum install certbot -y
    yum install certbot-dns-google -y
    certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
    
  16. Vous pouvez maintenant trouver vos fichiers de certificat et de clé privée dans ce répertoire : cd /etc/letsencrypt/live/your_domain_name/

    Exemple :

    cd /etc/letsencrypt/live/apigee-hybrid-docs.net
    ls
      cert.pem  chain.pem  fullchain.pem  privkey.pem  README

  17. Copiez les fichiers fullchain.pem et privkey.pem sur votre ordinateur local.
  18. Mettez à jour votre fichier de remplacement pour qu'il pointe vers le certificat et la clé privée. Pour hostAliases, utilisez le nom DNS que vous avez créé précédemment.

    Exemple :

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: default
        hostAliases: ["apitest.apigee-hybrid-docs.net"]
        sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
        sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
        routingRules:
          - env: test
    
    mart:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
      sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
      replicaCountMin: 1
      replicaCountMax: 1
      hostAlias: "mart.apigee-hybrid-docs.net"
  19. Appliquer les modifications

    Si vous avez modifié la configuration mart, appliquez les modifications :

    apigeectl apply -f your_overrides_file -c mart

    Si vous avez modifié la configuration envs, appliquez les modifications :

    apigeectl apply -f your_overrides_file -c runtime
  20. Tester la configuration

    Déployez et testez un proxy, comme expliqué dans la section Créer et déployer un nouveau proxy API.