Korzystanie z TLS w portalu

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Możesz skonfigurować portal tak, aby używał TLS. Procedura konfiguracji TLS w przypadku portalu zależy od tego, jak został on wdrożony:

  • Cloud: skonfiguruj protokół TLS od Pantheon lub Acquia, usług hostingu działającej w chmurze dla portalu.
  • Apigee Edge dla Private Cloud: skonfiguruj lokalnie protokół TLS na serwerze hostującym portal.
. .

Protokół TLS i portal

Poniższy obraz przedstawia 2 miejsca, w których portal używa protokołu TLS:

  1. Na potrzeby komunikacji między portalem a interfejsem Edge Management API.

    Portal nie działa jako samodzielny system. Znaczna część informacji używanych przez portal jest przechowywana w Edge, gdzie można wdrożyć ją 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ć informacje lub je wysłać.

    Jednym z pierwszych kroków podczas tworzenia portalu jest określenie adresu URL interfejsu Edge Management API. W zależności od konfiguracji interfejsu Edge Management API adres URL może używać protokołu TLS. Więcej informacji znajdziesz w artykule Pierwsze kroki z tworzeniem portalu dla deweloperów.
  2. Do komunikacji między deweloperami a portalem.

    Gdy wdrażasz interfejsy API w portalu Usług dla deweloperów, deweloperzy logują się w tym portalu, aby rejestrować aplikacje i otrzymywać klucze interfejsu API. Dane logowania i klucz interfejsu API to zastrzeżone informacje, które chcesz przesłać za pomocą protokołu HTTPS, aby zapewnić ich bezpieczeństwo. Tego typu zastrzeżone informacje powinny być przesyłane przez HTTPS.

    Sposób konfigurowania TLS w tym scenariuszu zależy od sposobu wdrożenia portalu: chmury lub Apigee Edge dla Private Cloud. W sekcjach poniżej opisujemy oba te scenariusze.

Konfigurowanie protokołu TLS między portalem a interfejsem Edge Management API

Konfiguracja interfejsu Edge Management API określa, czy w komunikacji można używać protokołu 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 programista portalu musisz tylko wiedzieć, jak skonfigurowana jest przeglądarka Edge, aby ustawić połączenie między portalem a Edge.

Instrukcje konfigurowania połączenia z interfejsem Edge Management API znajdziesz w artykule Rozpoczęcie tworzenia portalu dla programistów.

Oparta na chmurze wersja Edge

Jeśli portal łączy się z chmurową wersją Edge, adres URL interfejsu Edge Management API jest wstępnie skonfigurowany przez Apigee pod kątem używania TLS. Podczas konfigurowania portalu uzyskujesz dostęp do interfejsu Edge Management API pod adresem URL https://api.enterprise.apigee.com/v1.

Instalacja Edge w chmurze prywatnej

W przypadku instalacji Edge w chmurze 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 zarządzania brzegiem, a TLSport to port TLS interfejsu Edge Management API. W zależności od konfiguracji Edge port może na przykład mieć wartość 8443, a nawet 8080.

Konfigurowanie protokołu TLS między programistami a portalem

Sposób konfigurowania TLS między programistami a portalem zależy od sposobu wdrożenia portalu: chmury lub Apigee Edge dla chmury prywatnej.

Portale działające w chmurze

Panteon

Pantheon oferuje bezpłatny, automatyczny protokół HTTPS dla wszystkich witryn na swojej platformie, korzystając z Pantheon Global CDN i funkcji Let's Encrypt. Zobacz też HTTPS w globalnej sieci CDN firmy Pantheon.

Acquia

Aby włączyć TLS/SSL za pomocą usługi Acquia, zobacz Włączanie SSL.

Edge dla portali Private Cloud

Wszystkie zalecane instalacje Apigee w chmurze prywatnej portalu wymagają, aby portal był za systemem równoważenia obciążenia, jak pokazano poniżej:

Dlatego w przypadku instalacji lokalnych dostępne są 2 opcje konfigurowania protokołu TLS:

  • Skonfiguruj TLS w systemie równoważenia obciążenia: skonfiguruj TLS w samym systemie równoważenia obciążenia, a nie w portalu. Procedura konfigurowania protokołu 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. Domyślnie Apigee instaluje serwer WWW Apache. Informacje o konfigurowaniu TLS na serwerze Apache znajdziesz w artykule Włączanie bezpiecznego protokołu HTTP (HTTPS) za pomocą protokołu HTTPS. .

Aby wdrożyć portal w środowisku produkcyjnym, musisz uzyskać własny certyfikat TLS.

Konfigurowanie dodatkowych ustawień TLS

Możesz edytować plik sites/default/settings.local.php (cloud) lub sites/default/settings.php (Private Cloud), aby wprowadzić zmiany w konfiguracji TLS w portalu.

Podczas edytowania pliku dodaj wystąpienia funkcji ini_set(), aby ustawić właściwość. Więcej informacji o tej funkcji znajdziesz tutaj: ini_set.

W pliku sites/default/settings.local.php (cloud) lub sites/default/settings.php (Private Cloud) możesz ustawić te właściwości:

  • cookie_httponly: (zalecane) określa ten plik cookie jako dostępny tylko przez protokół HTTP. Ustaw tę właściwość jako:

    ini_set('session.cookie_httponly', true);
  • session.cookie_secure – (opcjonalne) określa, że pliki cookie mogą być wysyłane tylko przez bezpieczne połączenia. Oznacza to jednak, że cała treść musi być wyświetlana przez HTTPS. Jeśli to ustawienie jest włączone, witryna nie działa przez HTTP. Ustaw tę właściwość jako:

    ini_set('session.cookie_secure', true);
  • gc_maslifetime i cookie_lifetime: (opcjonalny) gc_lifeteime określa liczbę sekund, po których dane można potencjalnie wyczyścić, a cookie_lifetime określa czas trwania pliku cookie w sekundach. Ustaw te właściwości jako:

    ini_set('session.gc_maxlifetime', 3600);
    ini_set('session.cookie_lifetime', 3600);

Więcej informacji o konfigurowaniu protokołu TLS między portalem dla programistów a klientami znajdziesz w artykule Włączanie SSL do bezpiecznej komunikacji HTTPS w witrynie z dokumentem Pantheon.

Konfigurowanie protokołu TLS z systemami równoważenia obciążenia

W celu uzyskania lepszej wydajności systemy równoważenia obciążenia są czasami skonfigurowane tak, aby kończyły działanie TLS. Po zakończeniu protokołu 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ą poświęcać tyle czasu na odszyfrowywanie wiadomości https://.

Jeśli systemy równoważenia obciążenia przekazują niezaszyfrowane komunikaty HTTP na serwery 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 spoza centrum danych, takich jak portal dla programistów Apigee, wiadomości nie są szyfrowane, co powoduje lukę w zabezpieczeniach.

Jeśli Twój portal dla programistów działa za systemami równoważenia obciążenia korzystającymi z zakończenia protokołu TLS i chcesz, aby cały ruch był obsługiwany przez https://, strony witryny muszą zawierać tylko linki https://. Musisz też dodać ten kod do pliku sites/default/settings.local.php (cloud) lub sites/default/settings.php (Private Cloud) w portalu dla programistów. System równoważenia obciążenia nie przekształca automatycznie zawartości stron HTML, dlatego kod sprawia, że wszystkie linki przekazywane do klienta zaczynają się od https://.

Aby skonfigurować TLS w systemach równoważenia obciążenia, dodaj te wiersze do pliku sites/default/settings.local.php (cloud) 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;
  }
}

Aby dowiedzieć się więcej, zobacz:

Przekierowuję ruch do portalu do HTTPS

Możesz przekierować cały ruch do HTTPS w portalu, aktualizując plik sites/default/settings.local.php (w chmurze) lub sites/default/settings.php (Private Cloud). Wymagane aktualizacje różnią się w zależności od tego, czy przekierowujesz do HTTPS z tej samej nazwy czy z kilku nazw hostów.

Przekierowanie do HTTPS na tej samej nazwie hosta

Dodaj ten kod do pliku sites/default/settings.local.php (chmura) lub sites/default/settings.php (Private Cloud), aby przekierować cały ruch do HTTPS portalu na tej samej nazwie hosta (na przykład *.devportal.apigee.io).

W tym scenariuszu, jeśli deweloper odwiedza Twój portal pod adresem live-example.devportal.apigee.io, ale potrzebuje dostępu do certyfikatu przesłanego dla domeny devportal.example.com, żądanie się nie powiedzie.

// 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;
  }
}

Przekierowanie do protokołu HTTPS na wielu nazwach hostów

Dodaj ten kod do pliku sites/default/settings.local.php (chmura) lub pliku sites/default/settings.php (Private Cloud), aby przekierować cały ruch do protokołu HTTPS portalu na wiele nazw hostów.

  // 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;
  }
}