Portalda TLS kullanma

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Portalı TLS kullanacak şekilde yapılandırabilirsiniz. Portal için TLS yapılandırma prosedürü, portalı nasıl dağıttığınıza bağlıdır:

  • Bulut: Portala yönelik bulut tabanlı barındırma hizmetleri olan Pantheon veya Acquia'dan TLS'yi yapılandırın.
  • Private Cloud için Apigee Edge: Portala ev sahipliği yapan sunucuda TLS'yi şirket içinde yapılandırın.

TLS ve portal

Aşağıdaki resimde, portalın TLS kullandığı iki yer gösterilmektedir:

  1. Portal ile Edge yönetim API'si arasındaki iletişim için.

    Portal, bağımsız bir sistem olarak çalışmaz. Bunun yerine, portal tarafından kullanılan bilgilerin çoğu aslında Edge'de depolanır. Edge, bulutta veya şirket içinde özel bulut kurulumu olarak dağıtılabilir. Gerekli olduğunda portal, bilgi almak veya bilgi göndermek için Edge yönetim API'sine bir HTTP veya HTTPS isteği gönderir.

    Portalınızı oluştururken yapmanız gereken ilk adımlardan biri Edge yönetim API'sinin URL'sini belirtmektir. Edge Management API'nin nasıl yapılandırıldığına bağlı olarak bu URL, TLS kullanabilir. Daha fazla bilgi için Geliştirici portalı oluşturma başlıklı makaleyi inceleyin.
  2. Geliştiriciler ile portal arasındaki iletişim için.

    API'lerinizi dağıtmak için Developer Services portalını kullandığınızda geliştiricileriniz uygulamaları kaydetmek ve API anahtarlarını almak için portala giriş yapar. Oturum açma kimlik bilgileri ve API anahtarı, güvenliklerini sağlamak için HTTPS üzerinden göndermek istediğiniz tescilli bilgilerdir. Bu tür tescilli bilgiler HTTPS üzerinden gönderilmelidir.

    Bu senaryo için TLS'yi yapılandırma şekliniz, portalı nasıl dağıttığınıza bağlıdır: bulut veya Apigee Edge for Private Cloud. Aşağıdaki bölümlerde her iki senaryo da açıklanmaktadır.

Portal ile Edge yönetim API'si arasında TLS yapılandırma

Edge yönetim API'sinin yapılandırması, iletişimin TLS kullanıp kullanamayacağını belirler. Edge Management API, TLS kullanacak şekilde yapılandırılmışsa portal HTTPS kullanabilir. Aksi takdirde, portal Edge ile HTTP üzerinden iletişim kurar. Bu nedenle, bir portal geliştiricisi olarak, portal ile Edge arasındaki bağlantıyı ayarlamak için Edge'in nasıl yapılandırıldığını bilmeniz yeterlidir.

Edge Management API'ye bağlantıyı yapılandırmak için kullandığınız prosedür hakkında bilgi edinmek istiyorsanız Geliştirici portalı oluşturma başlıklı makaleyi inceleyin.

Edge'in bulut tabanlı sürümü

Portalınız Edge'in bulut tabanlı sürümüne bağlanıyorsa Edge yönetim API'sinin URL'si, TLS kullanacak şekilde Apigee tarafından önceden yapılandırılır. Portalı yapılandırırken https://api.enterprise.apigee.com/v1 URL'sini kullanarak Edge Management API'ye erişirsiniz.

Edge'in özel bulut kurulumu

Edge'in özel bulut kurulumunda Edge yönetim API'sinin URL'si şu biçimdedir:
http://EdgePrivateCloudIp:8080/v1
veya:
https://EdgePrivateCloudIp:TLSport/v1

Burada EdgePrivateCloudIp, Edge Management Server sunucusunun IP adresi, TLSport ise Edge Management API'nin TLS bağlantı noktasıdır. Örneğin, Edge yapılandırmasına bağlı olarak bağlantı noktası numarası 8443 veya 8080 olabilir.

Geliştiriciler ile portal arasında TLS'yi yapılandırma

Geliştiriciler ile portal arasındaki TLS'yi yapılandırma şekliniz, portalı nasıl dağıttığınıza (bulut veya özel bulut için Apigee Edge) bağlıdır.

Bulut tabanlı portallar

Pantheon

Pantheon, Pantheon Global CDN aracılığıyla ve Let's Encrypt'i kullanarak platformundaki tüm siteler için ücretsiz otomatik HTTPS sağlar. Ayrıca Pantheon'un Global CDN'sinde HTTPS konusuna da bakın.

Acquia

Acquia'yı kullanarak TLS/SSL'yi etkinleştirmek için Enabling SSL (SSL'yi Etkinleştirme) başlıklı makaleyi inceleyin.

Özel bulut portalları için Edge

Apigee'nin önerdiği tüm Private Cloud portalı yüklemeleri, portalın aşağıda gösterildiği gibi bir yük dengeleyicinin arkasında olmasını gerektirir:

Bu nedenle, şirket içi yüklemelerde TLS'yi yapılandırmak için iki seçeneğiniz vardır:

  • Yük dengeleyicide TLS'yi yapılandırma: TLS'yi portalda değil, yük dengeleyicinin kendisinde yapılandırın. Bu nedenle, TLS'yi yapılandırmak için kullandığınız prosedür yük dengeleyiciye bağlıdır. Daha fazla bilgi için yük dengeleyicinizin belgelerine bakın.
  • TLS'yi portalın kendisinde yapılandırma: Gerekirse TLS'yi portalı barındıran web sunucusunda yapılandırabilirsiniz. Daha fazla bilgi için Portalı HTTPS kullanacak şekilde yapılandırma başlıklı makaleye bakın.

Portalı üretim ortamına dağıtmadan önce kendi TLS sertifikanızı edinmeniz gerekir.

Ek TLS ayarlarını yapılandırma

Portal için TLS'de yapılandırma değişiklikleri yapmak üzere sites/default/settings.local.php (bulut) veya sites/default/settings.php (özel bulut) dosyasını düzenleyebilirsiniz.

Dosyayı düzenlerken bir özelliği ayarlamak için ini_set() işlevinin örneklerini ekleyin. Bu işlev hakkında daha fazla bilgi için http://php.net/manual/en/function.ini-set.php adresini ziyaret edin.

sites/default/settings.local.php (bulut) veya sites/default/settings.php (özel bulut) dosyasında aşağıdaki özellikleri ayarlayabilirsiniz:

  • cookie_httponly: (Önerilir) Çerezin yalnızca HTTP protokolü üzerinden erişilebilir olduğunu belirtir. Bu özelliği şu şekilde ayarlayın:

    ini_set('session.cookie_httponly', true);
  • session.cookie_secure - (İsteğe bağlı) Çerezlerin yalnızca güvenli bağlantılar üzerinden gönderilebileceğini belirtir. Ancak bu, tüm içeriğin HTTPS üzerinden sunulması gerektiği anlamına gelir. Bu ayar etkinleştirilirse site HTTP üzerinden çalışmaz. Bu özelliği şu şekilde ayarlayın:

    ini_set('session.cookie_secure', true);
  • gc_maxlifetime ve cookie_lifetime: (İsteğe bağlı) gc_lifeteime, verilerin temizlenebileceği saniye sayısını belirtir ve cookie_lifetime, çerezin ömrünü saniye cinsinden belirtir. Bu özellikleri şu şekilde ayarlayın:

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

Geliştirici portalı ile istemciler arasında TLS ayarlama hakkında daha fazla bilgi için Pantheon doküman sitesindeki Enable SSL for Secure HTTPS Communication (Güvenli HTTPS İletişimi İçin SSL'yi Etkinleştirme) başlıklı makaleyi inceleyin.

Yük dengeleyicilerle TLS'yi yapılandırma

Daha iyi performans için yük dengeleyiciler bazen TLS sonlandırması yapacak şekilde yapılandırılır. TLS sonlandırma ile yük dengeleyiciler, https:// üzerinden gönderilen iletilerin şifresini çözer ve iletileri http:// üzerinden arka uç sunucularına yönlendirir. Bu sayede arka uç sunucular, https:// mesajlarının şifresini çözme yükünden kurtulur.

Yük dengeleyiciler şifrelenmemiş HTTP mesajlarını aynı veri merkezindeki sunuculara yönlendiriyorsa güvenlik sorun teşkil etmez. Ancak yük dengeleyiciler, iletileri http:// üzerinden veri merkezinin dışındaki sunuculara (ör. Apigee geliştirici portalınız) yönlendirirse iletiler şifrelenmez ve bu durum güvenlik açığına neden olur.

Geliştirici portalınız TLS sonlandırması kullanan yük dengeleyicilerin arkasında bulunuyorsa ve tüm trafiğin https:// üzerinden sunulmasını istiyorsanız web sitesi sayfalarının yalnızca https:// bağlantılarını içermesi ve geliştirici portalınızın sites/default/settings.local.php (bulut) veya sites/default/settings.php (özel bulut) dosyasına aşağıdaki kodu eklemeniz gerekir. Yük dengeleyici, HTML sayfalarının içeriğini otomatik olarak dönüştürmediğinden kod, istemciye iletilen tüm bağlantıların https:// ile başlamasını sağlar.

TLS'yi yük dengeleyicilerle yapılandırmak için aşağıdaki satırları sites/default/settings.local.php (bulut) veya sites/default/settings.php (Private Cloud) dosyasına ekleyin:

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

Daha fazla bilgi için aşağıdaki sayfaları inceleyin:

Portal trafiğini HTTPS'ye yönlendirme

sites/default/settings.local.php (Cloud) veya sites/default/settings.php (Private Cloud) dosyanızı güncelleyerek tüm portal trafiğini HTTPS'ye yönlendirebilirsiniz. Gerekli güncellemeler, aynı ana makine adında mı yoksa birden fazla ana makine adında mı HTTPS'ye yönlendirme yaptığınıza bağlı olarak değişir.

Aynı ana makine adında HTTPS'ye yönlendirme

Aynı ana makine adında (örneğin, *.devportal.apigee.io) tüm portal trafiğini HTTPS'ye yönlendirmek için aşağıdaki kodu sites/default/settings.local.php (bulut) veya sites/default/settings.php (özel bulut) dosyanıza ekleyin.

Bu senaryoda, bir geliştirici live-example.devportal.apigee.io adresindeki portalınızı ziyaret ediyorsa ancak devportal.example.com için yüklenen bir sertifikaya erişmesi gerekiyorsa istek başarısız olur.

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

Birden fazla ana makine adında HTTPS'ye yönlendirme

Aşağıdaki kodu sites/default/settings.local.php dosyanıza (Cloud) veya sites/default/settings.php dosyanıza (Private Cloud) ekleyerek tüm portal trafiğini birden fazla ana makine adında HTTPS'ye yönlendirin.

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