Vous consultez la documentation sur Apigee Edge.
Consultez la documentation sur Apigee X.
Vous pouvez configurer le portail pour qu'il utilise le protocole TLS. La procédure de configuration TLS du portail dépend du mode de déploiement du portail:
- Cloud: configurez TLS depuis Pantheon ou Acquia, les services d'hébergement dans le cloud du portail.
- Apigee Edge pour le cloud privé: configurez le protocole TLS sur site sur le serveur qui héberge le portail.
TLS et le portail
L'image suivante montre les deux emplacements où le portail utilise le protocole TLS:
- Pour la communication entre le portail et l'API de gestion Edge.
Le portail ne fonctionne pas comme un système autonome. Une grande partie des informations utilisées par le portail sont en fait stockées sur Edge, où Edge peut être déployé dans le cloud ou sur site en tant qu'installation de cloud privé. Si nécessaire, le portail envoie une requête HTTP ou HTTPS à l'API Edge Management pour récupérer des informations ou envoyer des informations.
Lorsque vous créez votre portail, vous devez d'abord spécifier l'URL de l'API de gestion Edge. Selon la configuration de l'API de gestion Edge, cette URL peut utiliser TLS. Pour en savoir plus, consultez la section Créer un portail des développeurs. - Pour la communication entre les développeurs et le portail.
Lorsque vous déployez vos API depuis le portail des services pour les développeurs, vos développeurs se connectent au portail pour enregistrer des applications et recevoir des clés API. Les identifiants de connexion et la clé API sont des informations propriétaires que vous souhaitez envoyer via HTTPS pour garantir leur sécurité. Ce type d'informations propriétaires doit être envoyé via HTTPS.
La configuration de TLS dans ce scénario dépend de la manière dont vous avez déployé le portail: cloud ou Apigee Edge pour le cloud privé. Les sections suivantes décrivent les deux scénarios.
Configuration de TLS entre le portail et l'API de gestion Edge
La configuration de l'API de gestion Edge détermine si la communication peut utiliser TLS ou non. Si l'API de gestion Edge est configurée pour utiliser TLS, le portail peut utiliser HTTPS. Sinon, le portail communique avec Edge via HTTP. Par conséquent, en tant que développeur de portail, il vous suffit de savoir comment Edge est configuré pour définir la connexion entre le portail et Edge.
Pour connaître la procédure utilisée pour configurer la connexion à l'API Edge Management, consultez la section Créer un portail des développeurs.
Version cloud d'Edge
Si votre portail se connecte à la version cloud d'Edge, l'URL de l'API de gestion Edge est préconfigurée par Apigee pour utiliser TLS. Lorsque vous configurez le portail, vous accédez à l'API Edge Management à l'aide de l'URL https://api.enterprise.apigee.com/v1.
Installation dans le cloud privé d'Edge
Pour une installation Edge privée, l'URL de l'API Edge Management se présente sous la forme suivante:
http://EdgePrivateCloudIp:8080/v1
ou:
https://EdgePrivateCloudIp:TLSport/v1
où EdgePrivateCloudIp est l'adresse IP du serveur Edge Server Server et TLSport est le port TLS pour l'API de gestion Edge. Par exemple, le numéro de port peut être 8443, voire 8080, en fonction de la configuration Edge.
Configurer le protocole TLS entre les développeurs et le portail
La configuration de TLS entre les développeurs et le portail dépend de la manière dont vous avez déployé le portail: cloud ou Apigee Edge pour le cloud privé.
Portails dans le cloud
Panthéon
Pantheon fournit le protocole HTTPS automatisé sans frais pour tous les sites de sa plate-forme via le Pantheon Global CDN et utilise Let's Encrypt. Consultez également la section HTTPS sur le CDN mondial de Pantheon.
Acquia
Pour activer TLS/SSL à l'aide d'Acquia, consultez Activer SSL.Edge pour les portails de cloud privé
Toutes les installations de cloud privé recommandées par Apigee nécessitent que le portail se trouve derrière un équilibreur de charge, comme indiqué ci-dessous:
Par conséquent, deux options de configuration sont disponibles pour les installations sur site:
- Configurer TLS sur l'équilibreur de charge: configurez TLS sur l'équilibreur de charge lui-même, et non sur le portail. La procédure de configuration du protocole TLS dépend donc de l'équilibreur de charge. Pour en savoir plus, consultez la documentation de votre équilibreur de charge.
- Configurer TLS sur le portail lui-même: si nécessaire, vous pouvez configurer TLS sur le serveur Web qui héberge le portail. Pour en savoir plus, consultez la section Configurer le portail pour utiliser HTTPS.
Vous devez obtenir votre propre certificat TLS avant de pouvoir déployer le portail dans un environnement de production.
Configurer des paramètres TLS supplémentaires
Vous pouvez modifier le fichier sites/default/settings.local.php (cloud) ou sites/default/settings.php (cloud privé) pour modifier la configuration du protocole TLS pour le portail.
Lorsque vous modifiez le fichier, ajoutez des instances de la fonction ini_set() pour définir une propriété. Pour en savoir plus sur cette fonction, consultez la page http://php.net/manual/en/function.ini-set.php.
Vous pouvez définir les propriétés suivantes dans le fichier sites/default/settings.local.php (cloud) ou sites/default/settings.php (cloud privé) :
- cookie_httponly : (recommandé) spécifie que le cookie n'est accessible que via le protocole HTTP. Définissez cette propriété comme suit:
ini_set('session.cookie_httponly', true); - session.cookie_secure : (facultatif) spécifie que les cookies ne peuvent être envoyés que via des connexions sécurisées. Toutefois, cela signifie que tout le contenu doit être diffusé via HTTPS. Si ce paramètre est activé, le site ne fonctionne pas via HTTP. Définissez cette propriété comme suit:
ini_set('session.cookie_secure', true); - gc_maxlifetime et cookie_lifetime : (facultatif) gc_lifeteime spécifie le nombre de secondes après lesquelles les données peuvent potentiellement être nettoyées, et cookie_lifetime spécifie la durée de vie du cookie en secondes. Définissez ces propriétés comme suit:
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
Pour en savoir plus sur la configuration de TLS entre le portail des développeurs et les clients, consultez Activer SSL pour une communication HTTPS sécurisée sur le site Web de Pantheon.
Configurer TLS avec des équilibreurs de charge
Pour de meilleures performances, les équilibreurs de charge sont parfois configurés pour effectuer une terminaison TLS. Avec la terminaison TLS, les équilibreurs de charge déchiffrent les messages envoyés via https://, puis les transmettent aux serveurs backend via http://. Cela évite aux serveurs backend de devoir procéder au déchiffrement des messages https:// eux-mêmes.
Si les équilibreurs de charge transfèrent des messages HTTP non chiffrés aux serveurs du même centre de données, la sécurité ne pose pas de problème. Toutefois, si les équilibreurs de charge transfèrent des messages via http:// vers des serveurs en dehors du centre de données, tels que votre portail des développeurs Apigee, les messages ne sont pas chiffrés, ce qui ouvre une faille de sécurité.
Si votre portail des développeurs se trouve derrière des équilibreurs de charge qui utilisent la terminaison TLS et que vous souhaitez que tout le trafic soit diffusé via https://, les pages de sites Web ne doivent contenir que les liens https://. Vous devez donc ajouter le code suivant à votre fichier sites/default/settings.local.php (cloud) ou à sites/default/settings.php (cloud privé) du portail des développeurs. Étant donné que l'équilibreur de charge ne transforme pas automatiquement le contenu des pages HTML, le code garantit que tous les liens transmis au client commencent par https://.
Pour configurer le protocole TLS avec des équilibreurs de charge, ajoutez les lignes suivantes au fichier sites/default/settings.local.php (cloud) ou sites/default/settings.php (cloud privé) :
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Set HTTPS URL of portal $base_url = 'https://developers.myCo.com'; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_ FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_ FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); // You could optionally substitute a canonical server name for $_SERVER['HTTP_HOST'] here. header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
Pour en savoir plus, consultez :
- https://drupal.org/node/425990.
- https://drupal.org/node/313145.
- http://drupal.stackexchange.com/questions/102091/drupal-behind-a-ssl-offloading-reverse-proxy-is-this-config-correct
Rediriger le trafic du portail vers HTTPS
Vous pouvez rediriger tout le trafic du portail vers HTTPS en mettant à jour votre fichier sites/default/settings.local.php (cloud) ou sites/default/settings.php (cloud privé). Les mises à jour requises varient selon que vous redirigez vers HTTPS vers le même nom d'hôte ou plusieurs noms d'hôte.
Redirection vers HTTPS sur le même nom d'hôte
Ajoutez le code suivant à votre fichier sites/default/settings.local.php (cloud) ou sites/default/settings.php (cloud privé) pour rediriger l'ensemble du trafic du portail vers le HTTPS sur le même nom d'hôte (par exemple, *.devportal.apigee.io).
Dans ce scénario, si un développeur accède à votre portail à l'adresse live-example.devportal.apigee.io, mais qu'il doit accéder à un certificat importé pour devportal.example.com, la requête échoue.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
Redirection vers HTTPS sur plusieurs noms d'hôte
Ajoutez le code suivant à votre fichier sites/default/settings.local.php (cloud) ou sites/default/settings.php (cloud privé) pour rediriger l'ensemble du trafic du portail vers HTTPS sur plusieurs noms d'hôte.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Assume we are not forcing a redirect until proven otherwise. $force_redirect = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { // We will force a redirect because HTTPS is required. $force_redirect = TRUE; } // This works on Pantheon only; the constant is undefined elsewhere. switch (PANTHEON_ENVIRONMENT) { case 'dev': $canonical_hostname = 'dev.devportal.example.com'; break; case 'test': $canonical_hostname = 'test.devportal.example.com'; break; case 'live': $canonical_hostname = 'devportal.example.com'; break; default: $canonical_hostname = strtolower($_SERVER['HTTP_HOST']); break; } if ($canonical_hostname != strtolower($_SERVER['HTTP_HOST'])) { // We will force a redirect because hostname is not canonical. $force_redirect = TRUE; } if ($force_redirect) { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $canonical_hostname . $_SERVER['REQUEST_URI']); exit; } }