Vous consultez la documentation Apigee Edge.
Accédez à la
documentation Apigee X. info
Vous pouvez configurer le portail pour qu'il utilise le protocole TLS. La procédure de configuration TLS pour le portail dépend de la façon dont vous l'avez déployé :
- Cloud : configurez TLS à partir de Pantheon ou d'Acquia, les services d'hébergement cloud pour le portail.
- Apigee Edge pour le cloud privé : configurez TLS sur site sur le serveur hébergeant le portail.
TLS et le portail
L'image suivante montre les deux emplacements où le portail utilise TLS :

- Pour la communication entre le portail et l'API de gestion Edge.
Le portail ne fonctionne pas comme un système autonome. En effet, la plupart des informations utilisées par le portail sont stockées sur Edge, qui 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 de gestion Edge pour récupérer ou envoyer des informations.
Lorsque vous créez votre portail, l'une des premières étapes consiste à 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 page Créer un portail des développeurs. - Pour la communication entre les développeurs et le portail.
Lorsque vous utilisez le portail des services pour les développeurs afin de déployer vos API, 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 façon dont vous configurez TLS pour ce scénario dépend de la façon dont vous avez déployé le portail : dans le cloud ou dans Apigee Edge pour le cloud privé. Les sections suivantes décrivent les deux scénarios.
Configurer 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. 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, vous n'avez besoin de savoir comment Edge est configuré que pour définir la connexion entre le portail et Edge.
Pour connaître la procédure à suivre pour configurer la connexion à l'API de gestion Edge, consultez la page 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 de gestion Edge à l'aide de l'URL https://api.enterprise.apigee.com/v1.
Installation cloud privé d'Edge
Pour une installation cloud privé d'Edge, l'URL de l'API de gestion Edge se présente comme suit :
forme :
http://EdgePrivateCloudIp:8080/v1
ou :
https://EdgePrivateCloudIp:TLSport/v1
où EdgePrivateCloudIp est l'adresse IP du serveur Edge Management Server et TLSport est le port TLS de l'API de gestion Edge. Par exemple, le numéro de port peut être 8443 ou même 8080 en fonction de la configuration Edge.
Configurer TLS entre les développeurs et le portail
La façon dont vous configurez TLS entre les développeurs et le portail dépend de la façon dont vous avez déployé le portail : dans le cloud ou dans Apigee Edge pour le cloud privé.
Portails cloud
Pantheon
Pantheon fournit un protocole HTTPS automatisé et sans frais pour tous les sites de sa plate-forme via le CDN mondial Pantheon et en utilisant Let's Encrypt. Consultez également la page HTTPS sur le CDN mondial de Pantheon.
Acquia
Pour activer TLS/SSL à l'aide d'Acquia, consultez la page Activer SSL.Portails Edge pour le cloud privé
Toutes les installations cloud privé du portail recommandées par Apigee nécessitent que le portail se trouve derrière un équilibreur de charge, comme illustré ci-dessous :

Par conséquent, pour les installations sur site, vous disposez de deux options pour configurer TLS :
- 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 à suivre pour configurer TLS dépend donc de l'équilibreur de charge. Pour en savoir plus, consultez la documentation de votre équilibreur de charge pour plus d'informations.
- 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 page Configurer le portail pour qu'il utilise 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 apporter des modifications de configuration à 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 fonctionnera 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 de documentation Pantheon.
Configurer TLS avec des équilibreurs de charge
Pour de meilleures performances, les équilibreurs de charge sont parfois configurés pour effectuer la terminaison TLS. Avec l'arrêt TLS, les équilibreurs de charge déchiffrent les messages envoyés via https:// et les transfèrent aux serveurs backend via http://. Cela évite aux serveurs backend de déchiffrer eux-mêmes les messages https://.
Si les équilibreurs de charge transfèrent des messages http non chiffrés vers des serveurs du même centre de données, la sécurité n'est pas un problème. Toutefois, si les équilibreurs de charge transfèrent des messages via http:// vers des serveurs situés 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 du site Web doivent contenir uniquement des liens https:// et vous devez 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 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 les pages suivantes :
- 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 sur le même nom d'hôte ou sur plusieurs noms d'hôte.
Rediriger vers HTTPS sur le même nom d'hôte
Ajoutez le code suivant à votre sites/default/settings.local.php (cloud) ou sites/default/settings.php (cloud privé) pour rediriger tout le trafic du portail vers HTTPS sur le même nom d'hôte (par exemple, *.devportal.apigee.io).
Dans ce scénario, si un développeur consulte votre portail sur live-example.devportal.apigee.io, mais qu'il doit accéder à un certificat qui a été importé pour devportal.example.com, la requête échouera.
// 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; } }
Rediriger vers HTTPS sur plusieurs noms d'hôte
Ajoutez le code suivant à votre sites/default/settings.local.php fichier (cloud) ou sites/default/settings.php fichier (cloud privé) pour rediriger tout le 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; } }