Configurer le protocole TLS pour l'API BaaS

Edge for Private Cloud v4.18.01

Le protocole TLS (Transport Layer Security, dont le prédécesseur est SSL) est la technologie de sécurité standard permettant d'assurer une messagerie sécurisée et chiffrée dans votre environnement d'API. Vous pouvez configurer TLS sur les nœuds du portail API BaaS et de la pile API BaaS.

L'image suivante montre un schéma de déploiement standard pour API BaaS avec un seul nœud de portail BaaS et trois nœuds de pile API BaaS.

Les développeurs utilisent un navigateur pour envoyer des requêtes au portail. Par défaut, les requêtes utilisent le protocole HTTP sur le port 9000 du nœud du portail.

Ce déploiement inclut un équilibreur de charge entre les nœuds Portal et Stack. Dans cette configuration, le portail envoie des requêtes HTTP à l'équilibreur de charge, qui les transfère ensuite à l'un des nœuds Stack. Il s'agit de l'environnement de déploiement recommandé pour un système de production.

Options de configuration TLS

Lorsque vous configurez TLS pour API BaaS, plusieurs options s'offrent à vous :

  • Configurer TLS sur le portail et sur l'équilibreur de charge pour les nœuds de la pile

    Dans cette configuration, les développeurs utilisent le protocole HTTPS pour accéder au portail, et le portail exécuté dans le navigateur utilise HTTPS pour envoyer des requêtes aux nœuds de la pile via l'équilibreur de charge. L'équilibreur de charge utilise HTTP pour accéder aux nœuds de la pile.
  • Configurer TLS sur le portail, l'équilibreur de charge et les nœuds de la pile

    Pour plus de sécurité, configurez l'équilibreur de charge de sorte qu'il utilise TLS pour accéder aux nœuds de la pile.
  • Configurer TLS sur le portail et sur un seul nœud Stack

    Dans un petit environnement, tel qu'un environnement de test ou de développement, vous ne disposez peut-être que d'un seul nœud Stack, ce qui signifie qu'il n'est pas nécessaire d'inclure un équilibreur de charge. Dans cette configuration, configurez TLS sur les nœuds Portal et Stack.
  • Configurer TLS sur un équilibreur de charge pour le portail

    Une option non présentée ci-dessus consiste à utiliser un équilibreur de charge devant le nœud du portail. Dans cette configuration, vous pouvez configurer TLS sur l'équilibreur de charge et, éventuellement, sur la connexion entre l'équilibreur de charge et le portail.

Assurez-vous que le port TLS est ouvert

Les procédures ci-dessous configurent TLS sur le port par défaut du portail (9000) et sur le nœud de la pile (8080). Toutefois, vous pouvez modifier ce port si vous le souhaitez.

Quel que soit le port que vous utilisez, vous devez vous assurer qu'il est ouvert sur le nœud. Par exemple, vous pouvez utiliser la commande suivante pour ouvrir le port 8443 :

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

Configurer TLS sur la pile API BaaS

Par défaut, TLS est désactivé pour la pile API BaaS. Vous accédez ensuite à l'API BaaS via HTTP en utilisant l'adresse IP ou le nom DNS du nœud Stack et le port 8080. Exemple :

http://stack_IP:8080

Vous pouvez également configurer l'accès TLS à l'API BaaS afin d'y accéder sous la forme suivante :

https://stack_IP:8080

Dans cet exemple, vous configurez l'accès TLS pour utiliser le port 8080. Toutefois, le port 8080 n'est pas obligatoire. Vous pouvez configurer la pile pour qu'elle utilise un autre port. La seule exigence est que votre pare-feu autorise le trafic sur le port spécifié.

La pile ne peut accepter qu'un seul type de requête (HTTP ou HTTPS) sur un seul port. Par conséquent, si vous configurez l'accès HTTPS sur le port 8080, vous ne pouvez pas utiliser HTTP pour accéder au port 8080. Si vous configurez la pile pour qu'elle utilise le port 8443 avec HTTPS, elle n'écoutera plus sur le port 8080.

Procédez comme suit pour configurer l'accès TLS à la pile :

  1. Générez le fichier JKS du keystore contenant votre certification TLS et votre clé privée. Pour en savoir plus, consultez Configurer TLS/SSL pour Edge sur site.
    Remarque : Assurez-vous que le mot de passe du keystore et celui de la clé sont identiques.
  2. Copiez le fichier JKS du keystore dans un répertoire du nœud Stack, par exemple /opt/apigee/customer/application. Le répertoire doit être accessible à l'utilisateur "apigee".
  3. Remplacez le propriétaire du fichier JKS par l'utilisateur "apigee" :
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    où keystore.jks est le nom de votre fichier de keystore.
  4. Modifiez le fichier /opt/apigee/customer/application/usergrid.properties pour définir les propriétés suivantes, y compris le chemin d'accès au fichier JKS, ainsi que le mot de passe du keystore et de la clé. Si ce fichier n'existe pas, créez-le :
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # By default, TLS access uses port 8080.
    # Utilisez cette propriété pour spécifier un autre port.
    # tomcat-server_port=8080


    Avertissement : La valeur password doit être en texte clair. Par conséquent, vous devez protéger usergrid.properties contre tout accès non autorisé.

    Utilisez la propriété tomcat-server_keyalias pour spécifier l'alias du keystore. Vous avez défini l'alias de la clé au moment de sa création. Par exemple, vous pouvez le définir à l'aide de l'option -alias de la commande keytool.

    Utilisez tomcat-server_ssl.protocols pour définir les protocoles TLS compatibles avec la pile. Pour obtenir la liste des protocoles compatibles avec Java 8, consultez http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. Configurez le nœud Stack :
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. Redémarrez la pile BaaS :
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. Vérifiez que TLS fonctionne en exécutant la commande cURL suivante sur le nœud Stack à l'aide de HTTPS :
    > curl -k https://localhost:8080/status -v

    Si TLS est configuré correctement, vous devriez voir une réponse contenant des informations d'état.

    Si vous avez configuré l'accès TLS sur un port autre que 8080, modifiez la commande ci-dessus pour utiliser le port approprié.
  8. Répétez l'opération sur tous les nœuds de la pile.
  9. Si vous disposez d'un équilibreur de charge devant les nœuds Stack, configurez-le pour qu'il envoie des requêtes aux nœuds Stack via HTTPS. Pour en savoir plus, consultez la documentation de votre équilibreur de charge.

    Si le portail envoie des requêtes directes à la pile, configurez-le pour qu'il accède à la pile via HTTPS, comme décrit dans la section suivante.
  10. Suivez la procédure ci-dessous dans la section "Configurer les nœuds de la pile API BaaS pour TLS sur la pile ou le portail" pour vous assurer que le nœud de la pile dispose des URL TLS appropriées lors de la génération des réponses utilisateur.

Configurer le portail pour accéder à la pile via TLS

Le portail BaaS exécuté dans un navigateur fonctionne en effectuant des appels d'API vers la pile BaaS. Si vous configurez la pile BaaS pour utiliser TLS, vous devez également configurer le portail pour qu'il effectue ces appels via HTTPS.

Une installation API BaaS est généralement configurée pour :

  • Utilisez un équilibreur de charge entre le portail et les nœuds Stack

    Configurez l'équilibreur de charge pour qu'il envoie des requêtes aux nœuds Stack via HTTPS. Pour en savoir plus, consultez la documentation de votre équilibreur de charge.

    Dans cette configuration, le portail peut accéder à l'équilibreur de charge via HTTP ou HTTPS, selon la façon dont vous configurez l'équilibreur de charge. Si l'équilibreur de charge utilise TLS, suivez la procédure ci-dessous pour configurer le portail afin qu'il envoie des requêtes à l'équilibreur de charge HTTPS.
  • Faire en sorte que le portail envoie des requêtes directes à la pile

    Configurez le portail pour qu'il accède à la pile via HTTPS, comme décrit ci-dessous.

Suivez la procédure ci-dessous pour configurer le portail API BaaS afin d'effectuer des appels d'API via HTTPS :

  1. Configurez l'accès TLS sur la pile BaaS comme décrit ci-dessus, ou sur l'équilibreur de charge pour les nœuds de la pile, comme décrit dans la documentation de votre équilibreur de charge.
  2. Modifiez /opt/apigee/customer/application/portal.properties pour définir la propriété suivante. Si ce fichier n'existe pas, créez-le :
    baas.portal.config.overrideUrl=https://stackIP:port

    Spécifiez comme valeur de cette propriété l'adresse IP ou le nom DNS et le port du nœud de la pile d'API pour une installation à un seul nœud, ou de l'équilibreur de charge si vous disposez d'un équilibreur de charge devant les nœuds de la pile API BaaS.
  3. Configurez le nœud du portail :
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Redémarrez le portail à l'aide de la commande suivante :
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. Si vous avez utilisé un certificat autosigné lors de la configuration de l'accès TLS à la pile ci-dessus, il est possible que votre navigateur n'autorise pas les requêtes adressées à la pile depuis le portail. Si une erreur s'affiche dans le navigateur indiquant que l'accès HTTPS à la pile n'est pas autorisé, demandez l'URL suivante dans votre navigateur et ajoutez une exception de sécurité pour autoriser l'accès :
    https://stackIP:port/status

    Spécifiez l'adresse IP ou le nom DNS et le port du nœud ou de l'équilibreur de charge de la pile d'API.

Configurer TLS sur le portail API BaaS

Par défaut, les utilisateurs accèdent au portail en envoyant des requêtes HTTP non chiffrées via le port 9000 sur le serveur du portail. Vous pouvez configurer le portail pour qu'il utilise le protocole HTTPS afin de chiffrer les données envoyées vers et depuis le portail.

Par défaut, vous accédez au portail via HTTP en utilisant l'adresse IP ou le nom DNS du nœud du portail et le port 9000. Exemple :

http://portal_IP:9000

Vous pouvez également configurer l'accès TLS au portail afin d'y accéder sous la forme suivante :

https://portal_IP:9443

Dans cet exemple, vous configurez l'accès TLS pour utiliser le port 9443. Toutefois, le port 9443 n'est pas obligatoire. Vous pouvez configurer le portail pour qu'il utilise un autre port.

Le portail ne peut accepter qu'un seul type de requête (HTTP ou HTTPS) sur un seul port. Par conséquent, si vous configurez l'accès HTTPS sur le port 9000, vous ne pouvez pas utiliser HTTP pour accéder au port 9000. Si vous configurez le portail pour qu'il utilise le port 9443 avec HTTPS, il n'écoutera plus sur le port 9000.

Pour configurer TLS pour le portail :

  1. Créez un fichier de clé et un fichier de certificat au format PEM.
    Remarque : Assurez-vous qu'il n'y a pas de mot de passe/phrase secrète sur la clé ou le certificat.
  2. Copiez les fichiers PEM dans un répertoire du nœud du portail, tel que /opt/apigee/customer/application. Le répertoire doit être accessible à l'utilisateur "apigee".
  3. Remplacez la propriété des fichiers PEM par l'utilisateur "apigee" :
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Modifiez le fichier /opt/apigee/customer/application/portal.properties pour définir les propriétés suivantes. Si ce fichier n'existe pas, créez-le :
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # By default, TLS access uses port 9000.
    # Utilisez cette propriété pour spécifier un autre port.
    # baas.portal.listen=9000


    Utilisez baas.portal.ssl.protocols pour définir les protocoles TLS compatibles avec le portail. Pour obtenir la liste des protocoles compatibles, consultez la liste des noms de protocoles SSL définis par Nginx : http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Configurez le nœud du portail :
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. Redémarrez le portail :
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. Suivez la procédure ci-dessous, dans la section "Configurer les nœuds de la pile API BaaS pour TLS sur la pile ou le portail", pour vous assurer que le nœud de la pile dispose de l'URL TLS appropriée pour le portail.

Configurer les nœuds API BaaS pour TLS sur la pile ou le portail

Si vous incluez un équilibreur de charge devant les nœuds Stack ou Portal, ou si vous activez TLS directement sur le nœud Portal ou Stack, vous devez configurer les nœuds avec les URL appropriées pour accéder à Stack et Portal. Par exemple, les nœuds Stack ont besoin de ces informations dans les cas suivants :

  • Inclure une URL dans les réponses aux requêtes de l'API BaaS.
  • Ajouter des liens dans les modèles d'e-mails lors de la réinitialisation d'un mot de passe ou de l'envoi d'autres notifications.
  • Rediriger les utilisateurs vers des pages spécifiques du portail.

Si vous utilisez un équilibreur de charge devant les nœuds Stack ou si vous configurez TLS sur le nœud Stack, définissez la propriété suivante dans /opt/apigee/customer/application/usergrid.properties :

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

Remplacez http://localhost:8080 par l'URL de l'équilibreur de charge. Si l'équilibreur de charge est configuré pour utiliser TLS, utilisez le protocole HTTPS. Vous ne devez inclure le port que si vous utilisez un port non standard, c'est-à-dire un port autre que le port 80 pour HTTP et le port 443 pour HTTPS.

Vous devez également définir la propriété suivante dans /opt/apigee/customer/application/portal.properties si vous utilisez un équilibreur de charge devant les nœuds Stack :

baas.portal.config.overrideUrl=http://localhost:8080

Remplacez http://localhost:8080 par l'URL de l'équilibreur de charge de la pile.

Si vous utilisez un équilibreur de charge devant le nœud du portail ou si vous configurez TLS sur le nœud de la pile, définissez les propriétés suivantes dans usergrid.properties :

usergrid-deployment_portal.url=http://localhost:9000

Remplacez http://localhost:9000 par l'URL de l'équilibreur de charge. Si l'équilibreur de charge est configuré pour utiliser TLS, utilisez le protocole HTTPS. Vous ne devez inclure le port que si vous utilisez un port non standard, c'est-à-dire un port autre que le port 80 pour HTTP et le port 443 pour HTTPS.

Après avoir modifié usergrid.properties :

  1. Configurez le nœud Stack :
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Redémarrez la pile BaaS :
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. Si vous avez modifié portal.properties, configurez le nœud Portal :
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Redémarrez le portail BaaS :
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart