Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Możesz skonfigurować portal tak, aby używał TLS. Procedura konfiguracji TLS w portalu zależy od sposobu wdrożenia portalu:
- Chmura: skonfiguruj TLS w Pantheon lub Acquia, czyli usługach hostingu w chmurze dla portalu.
- Apigee Edge for Private Cloud: skonfiguruj TLS lokalnie na serwerze hostującym portal.
TLS i portal
Na ilustracji poniżej widać 2 miejsca, w których portal używa TLS:

- Do komunikacji między portalem a interfejsem Edge Management API.
Portal nie działa jako samodzielny system. Większość informacji używanych przez portal jest przechowywana w Edge, które można wdrożyć w chmurze lub lokalnie jako instalację Private Cloud. W razie potrzeby portal wysyła żądanie HTTP lub HTTPS do interfejsu Edge Management API, aby pobrać lub wysłać informacje.
Podczas tworzenia portalu jednym z pierwszych kroków jest określenie adresu URL interfejsu Edge Management API. W zależności od konfiguracji interfejsu Edge Management API ten adres URL może używać TLS. Więcej informacji znajdziesz w artykule Tworzenie portalu dla programistów. - Do komunikacji między deweloperami a portalem.
Gdy używasz portalu Developer Services do wdrażania interfejsów API, deweloperzy logują się w portalu, aby zarejestrować aplikacje i otrzymać klucze API. Dane logowania i klucz API to informacje zastrzeżone, które należy wysyłać przez HTTPS, aby zapewnić ich bezpieczeństwo. Tego typu informacje zastrzeżone należy wysyłać przez HTTPS.
Sposób konfigurowania TLS w tym scenariuszu zależy od sposobu wdrożenia portalu: w chmurze lub w Apigee Edge for Private Cloud. W kolejnych sekcjach opisujemy oba scenariusze.
Konfigurowanie TLS między portalem a interfejsem Edge Management API
Konfiguracja interfejsu Edge Management API określa, czy komunikacja może używać TLS. Jeśli interfejs Edge Management API jest skonfigurowany do używania TLS, portal może używać HTTPS. W przeciwnym razie portal komunikuje się z Edge przez HTTP. Dlatego jako deweloper portalu musisz tylko wiedzieć, jak skonfigurowane jest Edge, aby ustawić połączenie między portalem a Edge.
Informacje o procedurze konfigurowania połączenia z interfejsem Edge Management API znajdziesz w artykule Tworzenie portalu dla deweloperów.
Wersja Edge w chmurze
Jeśli Twój portal łączy się z wersją Edge w chmurze, adres URL interfejsu Edge Management API jest wstępnie skonfigurowany przez Apigee do używania TLS. Podczas konfigurowania portalu uzyskujesz dostęp do interfejsu Edge Management API za pomocą adresu URL https://api.enterprise.apigee.com/v1.
Instalacja Edge w Private Cloud
W przypadku instalacji Edge w Private Cloud adres URL interfejsu Edge Management API ma postać:
http://EdgePrivateCloudIp:8080/v1
lub:
https://EdgePrivateCloudIp:TLSport/v1
gdzie EdgePrivateCloudIp to adres IP serwera Edge Management Server, a TLSport to port TLS interfejsu Edge Management API. Na przykład numer portu może wynosić 8443 lub nawet 8080 w zależności od konfiguracji Edge.
Konfigurowanie TLS między deweloperami a portalem
Sposób konfigurowania TLS między deweloperami a portalem zależy od sposobu wdrożenia portalu: w chmurze lub w Apigee Edge for Private Cloud.
Portale w chmurze
Pantheon
Pantheon zapewnia bezpłatny, automatyczny protokół HTTPS dla wszystkich witryn na swojej platformie za pomocą globalnej sieci CDN Pantheon i Let's Encrypt. Zobacz też HTTPS w globalnej sieci CDN Pantheon.
Acquia
Aby włączyć TLS/SSL za pomocą Acquia, zapoznaj się z artykułem Włączanie SSL.Portale Edge for Private Cloud
Wszystkie zalecane przez Apigee instalacje portalu w Private Cloud wymagają, aby portal znajdował się za systemem równoważenia obciążenia, jak pokazano poniżej:

Dlatego w przypadku instalacji lokalnych masz 2 opcje konfigurowania TLS:
- Skonfiguruj TLS w systemie równoważenia obciążenia: skonfiguruj TLS w systemie równoważenia obciążenia samym, a nie w portalu. Procedura konfigurowania TLS zależy więc od systemu równoważenia obciążenia. Więcej informacji znajdziesz w dokumentacji systemu równoważenia obciążenia.
- Skonfiguruj TLS w samym portalu: w razie potrzeby możesz skonfigurować TLS na serwerze WWW, który hostuje portal. Więcej informacji znajdziesz w artykule Konfigurowanie portalu do używania HTTPS.
Zanim wdrożysz portal w środowisku produkcyjnym , musisz uzyskać własny certyfikat TLS.
Konfigurowanie dodatkowych ustawień TLS
Aby wprowadzić zmiany w konfiguracji TLS w portalu, możesz edytować plik sites/default/settings.local.php (chmura) lub sites/default/settings.php (Private Cloud).
Podczas edytowania pliku dodaj instancje funkcji ini_set(), aby ustawić właściwość. Więcej informacji o tej funkcji znajdziesz na stronie http://php.net/manual/en/function.ini-set.php.
W pliku sites/default/settings.local.php (chmura) lub sites/default/settings.php (Private Cloud) możesz ustawić te właściwości:
- cookie_httponly:
(Zalecane) określa, że plik cookie jest dostępny tylko przez protokół HTTP. Ustaw tę
właściwość w ten sposób:
ini_set('session.cookie_httponly', true); - session.cookie_secure
– (Opcjonalnie) określa, że pliki cookie mogą być wysyłane tylko przez bezpieczne połączenia. Oznacza to jednak, że cała zawartość musi być udostępniana przez HTTPS. Jeśli to ustawienie jest włączone, witryna nie będzie
działać przez HTTP. Ustaw tę właściwość w ten sposób:
ini_set('session.cookie_secure', true); - gc_maxlifetime
i cookie_lifetime:
(Opcjonalnie) gc_lifeteime
określa liczbę sekund, po których dane mogą zostać usunięte, a
cookie_lifetime określa
czas życia pliku cookie w sekundach. Ustaw te właściwości w ten sposób:
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
Więcej informacji o konfigurowaniu TLS między portalem dla deweloperów a klientami znajdziesz w artykule Włączanie SSL na potrzeby bezpiecznej komunikacji HTTPS w witrynie dokumentacji Pantheon.
Konfigurowanie TLS za pomocą systemów równoważenia obciążenia
Aby zwiększyć wydajność, systemy równoważenia obciążenia są czasami konfigurowane do wykonywania zakończenia TLS. W przypadku zakończenia TLS systemy równoważenia obciążenia odszyfrowują wiadomości wysyłane przez https:// i przekazują je do serwerów backendu przez http://. Dzięki temu serwery backendu nie muszą samodzielnie odszyfrowywać https:// wiadomości.
Jeśli systemy równoważenia obciążenia przekazują niezaszyfrowane wiadomości HTTP do serwerów w tym samym centrum danych, bezpieczeństwo nie jest problemem. Jeśli jednak systemy równoważenia obciążenia przekazują wiadomości przez http:// do serwerów poza centrum danych, np. do portalu dla programistów Apigee, wiadomości są niezaszyfrowane, co stwarza lukę w zabezpieczeniach.
Jeśli Twój portal dla programistów znajduje się za systemami równoważenia obciążenia, które używają zakończenia TLS, i chcesz, aby cały ruch był obsługiwany przez https://, strony witryny muszą zawierać tylko linki https://, a do pliku sites/default/settings.local.php (chmura) lub sites/default/settings.php (chmura prywatna) portalu dla programistów musisz dodać ten kod. Ponieważ system równoważenia obciążenia nie przekształca automatycznie zawartości stron HTML, kod zapewnia, że wszystkie linki przekazywane do klienta zaczynają się od https://.
Aby skonfigurować TLS za pomocą systemów równoważenia obciążenia, dodaj te wiersze do pliku sites/default/settings.local.php (chmura) lub sites/default/settings.php (Private Cloud):
// 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; } }
Więcej informacji znajdziesz na stronach:
- 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
Przekierowywanie ruchu w portalu do HTTPS
Możesz przekierować cały ruch w portalu do HTTPS, aktualizując plik sites/default/settings.local.php (chmura) lub sites/default/settings.php (Private Cloud). Wymagane aktualizacje różnią się w zależności od tego, czy przekierowujesz do HTTPS na tej samej nazwie hosta, czy na wielu nazwach hosta.
Przekierowywanie do HTTPS na tej samej nazwie hosta
Aby przekierować cały ruch w portalu do HTTPS na tej samej nazwie hosta (np. *.devportal.apigee.io), dodaj ten kod do pliku sites/default/settings.local.php (chmura) lub sites/default/settings.php (Private Cloud).
W tym scenariuszu, jeśli deweloper odwiedza Twój portal pod adresem live-example.devportal.apigee.io, ale musi uzyskać dostęp do certyfikatu przesłanego dla devportal.example.com, żądanie zakończy się niepowodzeniem.
// 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; } }
Przekierowywanie do HTTPS na wielu nazwach hosta
Aby przekierować cały ruch w portalu do HTTPS na wielu nazwach hosta, dodaj ten kod do pliku sites/default/settings.local.php (chmura) lub sites/default/settings.php (Private Cloud).
// 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; } }