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: Portal için bulut tabanlı barındırma hizmetleri olan Pantheon veya Acquia'dan TLS'yi yapılandırın.
  • Private Cloud için Apigee Edge: Portalı barındıran sunucuda şirket içi TLS'yi yapılandırın.

TLS ve portal

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

  1. Portal ve Edge Management API 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, Edge'in bulutta veya şirket içinde bir Private Cloud kurulumu olarak dağıtılabilmesini sağlar. Portal, gerektiğinde bilgi almak veya bilgi göndermek için Edge Management API'ye bir HTTP veya HTTPS isteği gönderir.

    Portalınızı oluştururken gerçekleştirmeniz gereken ilk adımlardan biri, Edge Management API'nin URL'sini belirtmektir. Edge Management API'nin nasıl yapılandırıldığına bağlı olarak söz konusu URL, TLS kullanabilir. Daha fazla bilgi için Geliştirici portalı oluşturma bölümüne bakın.
  2. Geliştiriciler ile portal arasında iletişim için.

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

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

Portal ve Edge Management API arasında TLS'yi yapılandırma

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

Edge Management API ile bağlantıyı yapılandırmak için kullanacağınız prosedür için Geliştirici portalı oluşturma bölümüne bakın.

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

Portalınız, Edge'in bulut tabanlı sürümüne bağlanırsa Edge Management API'nin URL'si Apigee tarafından TLS'yi kullanacak şekilde ö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 Private Cloud kurulumu

Edge'in Private Cloud yüklemesi için Edge Management API'nin 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, bağlantı noktası numarası Edge yapılandırmasına bağlı olarak 8443, hatta 8080 olabilir.

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

Geliştiriciler ve portal arasında TLS'yi yapılandırma şekliniz, portalı nasıl dağıttığınıza bağlıdır: Cloud veya Private Cloud için Apigee Edge.

Bulut tabanlı portallar

Panteon

Pantheon, platformundaki tüm siteler için Pantheon Global CDN aracılığıyla ve Let's Encrypt'i kullanarak ü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 SSL'yi Etkinleştirme başlıklı makaleye bakın.

Private Cloud portalları için Edge

Portalın Apigee tarafından önerilen tüm Private Cloud yüklemeleri aşağıda gösterildiği gibi portalın bir yük dengeleyicinin arkasında olmasını gerektirir:

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

  • TLS'yi yük dengeleyicide yapılandırın: TLS'yi portalda değil yük dengeleyicide 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 dengeleyicinizle ilgili belgelere bakın.
  • TLS'yi portalın kendisinde yapılandırın: Gerekirse portalı barındıran web sunucusunda TLS'yi yapılandırabilirsiniz. Daha fazla bilgi için Portalı HTTPS kullanacak şekilde yapılandırma bölümüne bakın.

Portalı bir üretim ortamına dağıtabilmek için önce kendi TLS sertifikanızı almanız 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 (Private Cloud) dosyasını düzenleyebilirsiniz.

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

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

  • cookie_httponly: (Önerilen) Ç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 kaç saniye sonra temizlenebileceğini belirtir. cookie_lifetime ise çerezin kullanım ö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ı ve istemciler arasında TLS'yi ayarlama hakkında daha fazla bilgi için Pantheon doküman sitesindeki Güvenli HTTPS İletişimi için SSL'yi etkinleştirme bölümüne bakın.

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

Daha iyi performans için yük dengeleyiciler bazen TLS sonlandırma işlemi gerçekleştirecek şekilde yapılandırılır. TLS sonlandırmasıyla birlikte yük dengeleyiciler, https:// üzerinden gönderilen mesajların şifresini çözer ve mesajları http:// üzerinden arka uç sunucularına yönlendirir. Bu da arka uç sunucuları, https:// mesajlarının şifresini çözme ek yükünü azaltır.

Yük dengeleyiciler, şifrelenmemiş http mesajlarını aynı veri merkezindeki sunuculara iletirse güvenlik sorun olmaz. Ancak yük dengeleyiciler mesajları http:// üzerinden veri merkezi dışındaki sunuculara yönlendiriyorsa (Apigee geliştirici portalınız gibi) mesajlar şifrelenmez ve bu da bir güvenlik deliği açar.

Geliştirici portalınız TLS sonlandırma kullanan yük dengeleyicilerin arkasında yer alıyorsa 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 aşağıdaki kodu geliştirici portalınıza (sites/default/settings.local.php (bulut) veya sites/default/settings.php (Private Cloud) 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 sites/default/settings.local.php (bulut) veya sites/default/settings.php (Private Cloud) dosyasına aşağıdaki satırları 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 (bulut) veya sites/default/settings.php (Private Cloud) dosyanızı güncelleyerek tüm portal trafiğini HTTPS'ye yönlendirebilirsiniz. Gereken güncellemeler, HTTPS'ye aynı ana makine adında mı yoksa birden fazla ana makine adında mı yönlendirme yaptığınıza bağlı olarak değişiklik gösterir.

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

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

Bu senaryoda, bir geliştirici live-example.devportal.apigee.io adresindeki portalınızı ziyaret ediyorsa ancak live-example.devportal.apigee.io için yüklenmiş 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

Birden fazla ana makine adında HTTPS'ye yönelik tüm portal trafiğini yönlendirmek için aşağıdaki kodu sites/default/settings.local.php dosyanıza (bulut) veya sites/default/settings.php dosyanıza (Private Cloud) 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;
  // 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;
  }
}