Configuration de la SNI entre Edge Message Processor et le serveur backend

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

L'indication du nom de serveur (SNI, Server Name Indication) permet de diffuser plusieurs serveurs backend HTTPS à partir de la même adresse IP et du même port, sans exiger que ces serveurs backend utilisent le même certificat TLS. Il s'agit d'une extension du protocole TLS. Lorsque l'extension SNI est activée sur un client, celui-ci transmet le nom d'hôte du serveur backend lors du handshake TLS initial. Cela permet au serveur TLS de déterminer le certificat TLS à utiliser pour valider la requête du client.

Par défaut, l'extension SNI est désactivée sur le composant de processeur de messages de Edge pour le cloud privé afin d'assurer la rétrocompatibilité avec les serveurs backend existants. Si votre serveur backend est configuré pour prendre en charge l'extension SNI, vous devez l'activer sur le composant "Processeur de messages". Sinon, les requêtes API passant par Apigee Edge échoueront et généreront des échecs de handshake TLS.

Ce document explique comment effectuer les opérations suivantes :

Avant de commencer

Identification du serveur compatible SNI

Cette section explique comment déterminer si l'extension SNI est activée pour un serveur backend.

  1. Exécutez la commande openssl et essayez de vous connecter au nom d'hôte du serveur approprié (Edge Router ou serveur backend) sans transmettre le nom du serveur, comme indiqué ci-dessous :
    openssl s_client -connect hostname:port
    
  2. Vous pouvez obtenir les certificats et, parfois, observer l'échec du handshake dans la commande openssl, comme indiqué ci-dessous:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
    
  3. Exécutez la commande openssl et essayez de vous connecter au nom d'hôte du serveur approprié (routeur Edge ou serveur backend) en transmettant le nom du serveur comme indiqué ci-dessous :
    openssl s_client -connect hostname:port -servername hostname
    
  4. Si vous obtenez un échec de handshake à l'étape 1 ou si vous obtenez des certificats différents aux étapes 1 et 2, cela signifie que l'extension SNI est activée pour le serveur spécifié.
  5. Si vous souhaitez vérifier ce point pour plusieurs serveurs backend, vous devez répéter les étapes ci-dessus pour chaque serveur backend.

Si vous constatez qu'un ou plusieurs serveurs backend sont activés par SNI, vous devez l'activer sur le composant "Processeur de messages", comme expliqué ci-dessous. Sinon, les requêtes API passant par Apigee Edge échoueront et généreront des échecs de handshake TLS.

Activer l'extension SNI entre les processeurs de messages Edge et le serveur backend

Cette section explique comment activer la SNI entre le processeur de messages Edge et le serveur backend. L'extension SNI peut être activée via la propriété jsse.enableSNIExtension du composant "Processeur de messages". Pour configurer une propriété sur le processeur de messages, utilisez le jeton conformément à la syntaxe décrite dans Comment configurer Edge.

Pour activer l'extension SNI sur les processeurs de messages, procédez comme suit:

  1. Localiser le jeton pour la propriété jsse.enableSNIExtension
  2. Activer l'extension SNI sur le processeur de messages

Localiser le jeton pour la propriété jsse.enableSNIExtension

Les étapes suivantes décrivent comment localiser le jeton de la propriété jsse.enableSNIExtension:

  1. Recherchez la propriété jsse.enableSNIExtension dans le répertoire source du processeur de messages /opt/apigee/edge-message-processor/source à l'aide de la commande suivante :
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
    
  2. Le résultat de cette commande affiche le jeton pour la propriété jsse.enableSNIExtension du processeur de messages comme suit :
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}
    

    Où la chaîne entre les tags {T}{/T} est le nom du jeton que vous pouvez définir dans le fichier .properties du processeur de messages.

    Ainsi, le jeton de la propriété jsse.enableSNIExtension est le suivant:

    conf_system_jsse.enableSNIExtension
    

Activer SNI sur le processeur de messages

Les étapes suivantes décrivent comment activer l'extension SNI sur le composant de processeur de messages Apigee.

  1. Sur l'ordinateur de traitement de messages, ouvrez le fichier suivant dans un éditeur. S'il n'existe pas encore, créez-le.
    /opt/apigee/customer/application/message-processor.properties
    

    Par exemple, pour ouvrir le fichier à l'aide de vi, saisissez la commande suivante :

    vi /opt/apigee/customer/application/message-processor.properties
    

  2. Ajoutez une ligne au format suivant au fichier de propriétés :
    conf_system_jsse.enableSNIExtension=true
    
  3. Enregistrez les modifications.
  4. Assurez-vous que ce fichier de propriétés appartient à l'utilisateur apigee, comme indiqué ci-dessous :
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Redémarrez le processeur de messages comme indiqué ci-dessous :
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Vérifiez que la configuration SNI est mise à jour sur le processeur de messages.
  7. Si vous disposez de plusieurs processeurs de messages, répétez les étapes ci-dessus sur chacun d'eux.

Désactiver la SNI entre les processeurs de messages Edge et le serveur backend

En général, aucun problème ne devrait se produire après avoir activé l'extension SNI. Toutefois, si vous constatez des problèmes de connectivité entre le processeur de messages Edge et le serveur backend après avoir activé l'extension SNI, vous pouvez toujours la désactiver en procédant comme suit.

Vous pouvez désactiver l'extension SNI en redéfinissant la propriété jsse.enableSNIExtension sur false dans le composant "Processeur de messages".

Désactiver la SNI sur les processeurs de messages

Les étapes suivantes décrivent comment désactiver l'extension SNI sur les processeurs de messages Apigee.

  1. Sur l'ordinateur de traitement de messages, ouvrez le fichier suivant dans un éditeur. S'il n'existe pas encore, créez-le.
    /opt/apigee/customer/application/message-processor.properties
    

    Par exemple, pour ouvrir le fichier à l'aide de vi, saisissez la commande suivante :

    vi /opt/apigee/customer/application/message-processor.properties
    

  2. Si la ligne conf_system_jsse.enableSNIExtension=true existe dans /opt/apigee/customer/application/message-processor.properties, modifiez-la comme suit :
    conf_system_jsse.enableSNIExtension=false
    
  3. Enregistrez les modifications.
  4. Assurez-vous que ce fichier de propriétés appartient à l'utilisateur apigee, comme indiqué ci-dessous :
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Redémarrez le processeur de messages comme indiqué ci-dessous :
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Vérifiez que la configuration SNI est mise à jour sur le processeur de messages.
  7. Si vous disposez de plusieurs processeurs de messages, répétez les étapes ci-dessus sur chacun d'eux.

Vérifier la configuration SNI sur les processeurs de messages

Cette section explique comment vérifier que la configuration SNI a bien été mise à jour sur les processeurs de messages.

Même si vous utilisez le jeton conf_system_jsse.enableSNIExtension pour configurer l'extension SNI sur le processeur de messages, vous devez vérifier que la propriété jsse.enableSNIExtension réelle a été définie avec la nouvelle valeur.

  1. Sur la machine de traitement des messages, recherchez la propriété jsse.enableSNIExtension dans le répertoire /opt/apigee/edge-message-processor/conf et vérifiez si elle a été définie avec la nouvelle valeur, comme indiqué ci-dessous :
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
    
  2. Si la configuration SNI a bien été mise à jour sur le processeur de messages, la commande ci-dessus affiche la nouvelle valeur dans le fichier system.properties.

    L'exemple de résultat de la commande ci-dessus une fois que vous avez activé l'extension SNI sur le processeur de messages est le suivant:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true
    

    De même, l'exemple de résultat de la commande ci-dessus après la désactivation de l'extension SNI sur le processeur de messages est le suivant:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false
    

    Dans l'exemple de sortie ci-dessus, notez que la propriété jsse.enableSNIExtension a été mise à jour avec la nouvelle valeur true ou false dans system.properties. Cela indique que la SNI est correctement activée ou désactivée sur le processeur de messages.

  3. Si vous voyez toujours l'ancienne valeur pour la propriété jsse.enableSNIExtension, vérifiez que vous avez suivi toutes les étapes décrites dans la section appropriée pour activer ou désactiver correctement l'extension SNI. Si vous avez manqué une étape, répétez-la correctement.
  4. Si vous ne parvenez toujours pas à activer/désactiver la SNI , contactez l'assistance Apigee Edge.