Utiliser SNI avec Edge

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

L'indication du nom du serveur (SNI, Server Name Indication) permet de diffuser plusieurs cibles HTTPS à partir de la même adresse IP. l'adresse e-mail et le port sans que ces cibles n'utilisent le même certificat TLS. Lorsque l'extension SNI est activée sur un client, le client transmet le nom d'hôte du point de terminaison cible dans le cadre handshake TLS. Cela permet au serveur TLS de déterminer quel certificat TLS doit être utilisé pour valider la demande.

Par exemple, si la cible de la requête est https://example.com/request/path, le client TLS ajoute ensuite l'extension server_name au handshake TLS. comme indiqué ci-dessous:

Edge prend en charge SNI pour:

  • Requêtes d'une application cliente à un proxy d'API Dans ce scénario, Edge agit comme le protocole TLS serveur
  • Requêtes d'Edge au backend. Dans ce scénario, Edge agit en tant que client TLS.

Pour en savoir plus sur la SNI, consultez les pages suivantes:

Prise en charge de SNI pour une requête vers un proxy d'API sur Périphérie

La prise en charge de l'extension SNI pour les requêtes adressées aux proxys d'API est contrôlée par des alias d'hôtes et des hôtes.

À propos du virtuel hôtes et alias d'hôte

Avec Edge, un hôte virtuel définit l'adresse IP et le port, ou le nom et le port DNS, sur qu'un proxy d'API est exposé et, par extension, l'URL que les applications utilisent pour accéder à un proxy d'API. L'adresse IP/le nom DNS correspond à un routeur Edge et le numéro de port est un port ouvert sur le sur un routeur Cloud Router.

Lorsque vous créez l'hôte virtuel, vous spécifiez également son alias. Il s'agit généralement du nom DNS de l'hôte virtuel. Pour déterminer le proxy d'API gère la requête, le routeur compare l'en-tête Host de la requête entrante au liste des alias d'hôtes disponibles définis par tous les hôtes virtuels.

La combinaison de l'alias d'hôte et du numéro de port de l'hôte virtuel doit être unique pour toutes des hôtes virtuels dans l'installation Edge. Cela signifie que plusieurs hôtes virtuels peuvent utiliser même numéro de port s'ils ont des alias d'hôte différents.

Un hôte virtuel définit également si le proxy d'API est accessible à l'aide du protocole HTTP ou par le protocole HTTPS chiffré à l'aide de TLS. Lorsque vous configurez un hôte virtuel pour utiliser HTTPS, associer l'hôte virtuel à un keystore contenant le certificat et la clé privée utilisés par virtuel lors d'un handshake TLS.

Pour en savoir plus sur les hôtes virtuels, consultez les pages suivantes:

Fonctionnement de SNI alias d'hôte

SNI vous permet d'avoir plusieurs hôtes virtuels définis sur le même port, chacun avec des Certificats et clés TLS. Edge détermine ensuite l'hôte virtuel et la paire certificat/clé utilisée par TLS, basée sur les server_name dans la requête de handshake TLS.

Le routeur Edge lit l'extension server_name dans le handshake TLS puis l'utilise pour effectuer une recherche dans les alias hôtes de tous les hôtes. Si le routeur détecte une correspondance avec un alias d'hôte, il utilise le certificat et la clé TLS de l'hôte virtuel associé à l'alias d'hôte. Si aucune correspondance n'est trouvée, le handshake TLS échoue.

Plutôt que d'échouer le handshake TLS, vous pouvez définir une paire certificat/clé par défaut, décrites dans les sections suivantes.

Définir une paire certificat/clé par défaut dans Edge pour le cloud

Apigee fournit un certificat TLS et une clé privée pour être compatible avec HTTPS. Même si de nombreux clients que vous préférez utiliser son propre certificat et sa clé privée au moment du déploiement, vous pouvez déployer vos API à l'aide du certificat et de la clé Apigee.

Dans Edge pour le cloud, si le routeur ne peut pas faire correspondre l'en-tête SNI à un alias d'hôte ou si le ne prend pas en charge SNI, alors le routeur utilise le certificat par défaut fourni par Apigee, qui est *.apigee.net.

Définir une paire certificat/clé par défaut dans Edge pour le cloud privé

Dans Edge pour le cloud privé, si aucune correspondance n'est trouvée entre l'extension server_name et les alias d'hôte de tous les hôtes virtuels, ou si le client à l'origine de la demande n'est pas compatible avec l'extension SNI, vous pouvez configurer le Routeur pour utiliser le certificat/la clé d'un hôte virtuel par défaut sur le port. L'hôte virtuel par défaut est défini par une combinaison du nom de l'organisation, du nom de l'environnement et du nom d'hôte virtuel, dans le formulaire:

orgName_envName_vhName

Le routeur utilise le certificat/la clé de la combinaison de orgName_envName_vhName qui arrive en premier dans l’ordre alphabétique. Par exemple, la requête arrive sur le port 443, Deux hôtes virtuels définis pour l'organisation example dans l'environnement prod:

  • nom d'hôte virtuel = default
  • nom d'hôte virtuel = test

Dans cet exemple, le routeur utilise le certificat/la clé de l'hôte virtuel nommé default. car example_prod_default vient avant example_prod_test dans l'ordre alphabétique.

Pour activer l'hôte virtuel par défaut:

  1. Sur le premier nœud de routeur, modifiez /opt/apigee/customer/application/router.properties. Si ce fichier n'existe pas, créez-le.
  2. Ajoutez la propriété suivante au fichier pour pouvoir définir un hôte virtuel par défaut:
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. Redémarrez le routeur:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. Répétez ces étapes sur tous les routeurs restants.

Plutôt que d'utiliser le certificat/la clé de l'hôte virtuel par défaut, vous pouvez définir explicitement certificat/clé par défaut sur le routeur. Pour définir une valeur par défaut explicite, procédez comme suit : certificat/clé:

  1. Sur le premier nœud de routeur, copiez le certificat et la clé privée à un emplacement du nœud de routeur. accessible par l'utilisateur Apigee. Par exemple, /opt/apigee/customer/application.
  2. Changez la propriété des fichiers sur "apigee. utilisateur:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. Modifier /opt/apigee/customer/application/router.properties. Si ce fichier n'existe pas, créez-le.
  4. Ajoutez les propriétés suivantes au fichier pour pouvoir spécifier le certificat/la clé par défaut:
    conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. Définissez les propriétés suivantes dans router.properties pour spécifier l'emplacement du certificat et de la clé:
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. Redémarrez le routeur:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Répétez ces étapes sur tous les routeurs restants.

Prise en charge de l'extension SNI pour les demandes d'Edge à le backend

Edge prend en charge l'utilisation de la SNI des processeurs de messages pour cibler les points de terminaison dans Apigee Edge pour et pour les déploiements de clouds privés. Par défaut, l'extension SNI est activée sur les processeurs de message Edge pour le cloud et désactivées dans le cloud privé.

En utilisant SNI vers le backend dans Edge pour le cloud privé

Pour Edge pour le cloud privé, afin d’être rétrocompatible avec les backends cibles existants, Apigee a désactivé l'extension SNI par défaut. Si votre backend cible est configuré pour prendre en charge l'extension SNI, vous pouvez activez cette fonctionnalité comme décrit ci-dessous pour votre version de Edge.

Aucune autre configuration spécifique à la périphérie n'est requise. Si votre environnement cible est configuré SNI, Edge le prend en charge. Edge extrait automatiquement le nom d'hôte de l'URL de la demande et l'ajoute à la requête de handshake TLS.

Activer SNI entre Edge et le backend pour Edge version 4.15.07.0x

Pour activer l'extension SNI, procédez comme suit:

  1. Sur le premier nœud du processeur de messages, ouvrez le fichier /opt/apigee4/conf/apigee/message-processor/system.properties dans un éditeur.
  2. Définissez la propriété suivante sur "true" dans system.properties:
    jsse.enableSNIExtension=true
  3. Redémarrez les processeurs de messages:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. Répétez ces étapes sur tous les processeurs de messages restants.

Activer SNI entre Edge et le backend pour Edge 4.16.01 et versions ultérieures

Pour activer l'extension SNI, procédez comme suit:

  1. Sur le premier nœud du processeur de messages, modifiez /opt/apigee/customer/application/message-processor.properties. Si ce fichier n'existe pas, créez-le.
  2. Ajoutez la propriété suivante au fichier:
    conf_system_jsse.enableSNIExtension=true
  3. Redémarrez le processeur de messages:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. Répétez ces étapes sur tous les processeurs de messages restants.