Edge pour Private Cloud v. 4.16.09
TLS (Transport Layer Security, dont le prédécesseur est SSL) est la technologie de sécurité standard qui permet de garantir une messagerie sécurisée et chiffrée dans votre environnement d'API. Vous pouvez configurer TLS sur les nœuds du portail BaaS et de la pile d'API BaaS.
L'image suivante montre un schéma de déploiement type pour l'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 du portail et de la pile. Dans cette configuration, le portail envoie des requêtes HTTP à l'équilibreur de charge, qui les transfère ensuite à l'un des nœuds de la pile. 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 le BaaS d'API, plusieurs options s'offrent à vous:
- Configurer TLS sur le portail et sur l'équilibreur de charge pour les nœuds de 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 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 pile
Pour plus de sécurité, configurez l'équilibreur de charge pour qu'il utilise TLS pour accéder aux nœuds de pile. - Configurer TLS sur le portail et sur un seul nœud de pile
Dans un petit environnement, comme un environnement de test ou de développement, vous ne disposez peut-être que d'un seul nœud de pile. Il n'est donc pas nécessaire d'inclure un équilibreur de charge. Dans cette configuration, configurez TLS à la fois sur le portail et les nœuds de pile. - 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.
Vérifier que le port TLS est ouvert
Les procédures ci-dessous configurent TLS sur le port par défaut du portail (9000) et du nœud de pile (8080). Vous pouvez toutefois 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 BaaS API. Vous accédez ensuite à l'API BaaS via HTTP à l'aide de l'adresse IP ou du nom DNS du nœud de pile et du 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 qu'il utilise 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 condition requise est que votre pare-feu autorise le trafic sur le port spécifié.
La pile n'accepte qu'un seul type de requête (HTTP ou HTTPS) sur un seul port. Par conséquent, si vous configurez un 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.
Pour configurer l'accès TLS à la pile, procédez comme suit:
- Générez le fichier JKS du keystore contenant votre certification TLS et votre clé privée. Pour en savoir plus, consultez la section Configurer TLS/SSL pour Edge sur site.
Remarque: Assurez-vous que le mot de passe du keystore et de la clé sont identiques. - Copiez le fichier JKS du keystore dans un répertoire du nœud de pile, tel que /opt/apigee/customer/application. Le répertoire doit être accessible à l'utilisateur "apigee".
- Attribuez la propriété du fichier JKS à l'utilisateur "apigee" :
> chown apigee:apigee /opt/apigee/customer/application/keystore.jks
où keystore.jks est le nom de votre fichier keystore. - 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 et 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
# Par défaut, l'accès TLS utilise le 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. Vous devez donc 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 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 la page http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename. - Configurez le nœud de pile:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Déployez les modifications dans Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - Redémarrez la pile BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Vérifiez que TLS fonctionne en exécutant la commande cURL suivante sur le nœud de pile à l'aide de HTTPS:
> curl -k https://localhost:8080/status -v
Si TLS est configuré correctement, vous devriez obtenir une réponse contenant des informations d'état.
Si vous avez configuré l'accès TLS sur un port autre que le port 8080, modifiez la commande ci-dessus pour utiliser le port approprié. - Répétez l'opération sur tous les nœuds de la pile.
- Si vous disposez d'un équilibreur de charge devant les nœuds de pile, configurez-le pour qu'il envoie des requêtes aux nœuds de pile 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. - Suivez la procédure ci-dessous dans la section "Configurer les nœuds de pile BaaS API pour TLS sur la pile ou le portail" pour vous assurer que le nœud de pile dispose des URL TLS appropriées lors de la génération des réponses utilisateur.
Configurer le portail pour qu'il accède à la pile via TLS
Le portail BaaS exécuté dans un navigateur fonctionne en effectuant des appels d'API à la pile BaaS. Si vous configurez la pile BaaS pour utiliser le protocole TLS, vous devez également configurer le portail pour effectuer ces appels via HTTPS.
Une installation de BaaS d'API est généralement configurée pour:
- Utiliser un équilibreur de charge entre les nœuds du portail et de la pile
Configurez l'équilibreur de charge pour envoyer des requêtes aux nœuds de la pile 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, en fonction de la configuration de 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. - Demander au portail d'envoyer 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:
- 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.
- 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
Indiquez comme valeur de cette propriété l'adresse IP ou le nom DNS et le port du nœud de la pile API pour une installation à nœud unique, ou de l'équilibreur de charge si vous en avez un devant les nœuds de la pile BaaS API. - Configurez le nœud du portail:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Redémarrez le portail à l'aide de la commande:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - 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 envoyées à la pile à partir du portail. Si le navigateur renvoie une erreur 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
Indiquez l'adresse IP, ou le nom DNS et le port du nœud de pile d'API ou de l'équilibreur de charge.
Configurer TLS sur le portail BaaS de l'API
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 HTTPS afin de chiffrer les données envoyées vers et depuis le portail.
Par défaut, vous accédez au portail via HTTP à l'aide de l'adresse IP ou du nom DNS du nœud du portail et du port 9000. Exemple :
http://portal_IP:9000
Vous pouvez également configurer l'accès TLS au portail afin de pouvoir y accéder dans le formulaire suivant:
https://portal_IP:9443
Dans cet exemple, vous configurez l'accès TLS pour qu'il utilise 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 y accéder. 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:
- Créez un fichier de clé et un fichier de certificat au format PEM.
Remarque: Assurez-vous qu'aucun mot de passe ni phrase secrète n'est associé à la clé ou au certificat. - 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".
- Attribuez la propriété des fichiers PEM à l'utilisateur "apigee" :
> chown apigee:apigee /opt/apigee/customer/application/*.PEM - 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
# Par défaut, l'accès TLS utilise le 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. - Configurez le nœud du portail:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Déployez la configuration:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - Redémarrez le portail:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Suivez la procédure ci-dessous dans la section "Configurer les nœuds de la pile BaaS API 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 de la pile ou du portail, ou si vous activez le protocole TLS directement sur le nœud de la pile ou du portail, vous devez configurer les nœuds avec les URL appropriées pour accéder à la pile et au portail. Par exemple, les nœuds de la pile nécessitent ces informations dans les cas suivants:
- Inclure une URL dans les réponses aux requêtes API BaaS
- Ajout de liens dans les modèles d'e-mail lors de la réinitialisation d'un mot de passe ou de l'envoi d'autres notifications.
- Redirection des utilisateurs vers des pages spécifiques du portail
Si vous utilisez un équilibreur de charge devant les nœuds de pile ou si vous configurez TLS sur le nœud de pile, définissez les propriétés suivantes dans /opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_swagger.basepath=http://localhost:8080 usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw
Remplacez http://localhost:8080 par l'URL du répartiteur de charge. Si l'équilibreur de charge est configuré pour utiliser TLS, utilisez le protocole HTTPS. Vous n'avez besoin d'inclure le port que si vous utilisez un port non standard, c'est-à-dire 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 de la pile:
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 configurez TLS sur le nœud de la pile, définissez les propriétés suivantes dans usergrid.properties:
usergrid-deployment_usergrid.view.management.organizations.organization.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.confirm=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 n'avez besoin d'inclure le port que si vous utilisez un port non standard, c'est-à-dire autre que le port 80 pour HTTP et le port 443 pour HTTPS.
Après avoir modifié usergrid.properties:
- Configurez le nœud de pile:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Déployez les modifications dans Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - Redémarrez la pile BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Si vous avez modifié portal.properties, configurez le nœud du portail:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Déployez les modifications:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - Redémarrez le portail BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart