Portalda TLS kullanma

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
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: TLS'yi, portal için bulut tabanlı barındırma hizmetleri olan Pantheon veya Acquia'dan yapılandırın.
  • Apigee Edge for Private Cloud: Portalı barındıran sunucuda şirket içinde TLS'yi yapılandırın.
ziyaret edin. ziyaret edin.

TLS ve portal

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

  1. Portal ile 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 yüklemesi olarak dağıtılabilir. Portal, gerektiğinde bilgi almak veya bilgi göndermek için Edge Management API'ye HTTP veya HTTPS isteğinde bulunur.
    .
    . Portalınızı oluştururken gerçekleştirmeniz gereken ilk adımlardan biri Edge management API'nin URL'sini belirtmektir. Edge Management API'nin yapılandırmasına bağlı olarak bu URL, TLS kullanabilir. Daha fazla bilgi için Geliştirici portalınızı oluşturmaya başlama başlıklı makaleyi inceleyin.
  2. Geliştiriciler ile portal arasındaki iletişim için kullanılır.
    .
    . 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üvenliğini 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: bulut 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'yi kullanıp kullanamayacağını belirler. Edge Management API, TLS 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 sadece Edge'in portal ile Edge arasındaki bağlantıyı kuracak şekilde nasıl yapılandırıldığını bilmeniz gerekir.

Edge management API ile bağlantıyı yapılandırmada kullandığınız prosedür için Geliştirici portalınızı oluşturmaya başlama 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 management API'nin URL'si Apigee tarafından TLS kullanacak şekilde önceden yapılandırılır. Portalı yapılandırırken https://api.enterprise.apigee.com/v1 URL'sini kullanarak Edge yönetim API'sine erişirsiniz.

Edge'in Private Cloud yüklemesi

Edge'in Private Cloud kurulumu için Edge management API'nin URL'si şu biçimdedir:
http://EdgePrivateCloudIp:8080/v1?
. veya:
https://EdgePrivateCloudIp:TLSport/v1

Burada EdgePrivateCloudIp, Uç Yönetim Sunucusu sunucusunun IP adresidir. TLSport ise Edge Management API için 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 ile 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 ve Let's Encrypt üzerinden ücretsiz ve otomatik olarak HTTPS sağlar. Ayrıca Pantheon'un Global CDN'sinde HTTPS konusuna bakın.

Acquia

Acquia kullanarak TLS/SSL'yi etkinleştirmek için SSL'yi Etkinleştirme bölümüne bakın.

Private Cloud portalları için Edge

Portalda Apigee tarafından önerilen tüm Private Cloud kurulumları için portalın aşağıda gösterildiği gibi bir yük dengeleyicinin arkasında olması gerekir:

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 dengeleyicinin kendisinde yapılandırın. Dolayısıyla, 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 portalda yapılandırın: Gerekirse portalı barındıran web sunucusunda TLS'yi yapılandırabilirsiniz. Apigee, varsayılan olarak Apache web sunucusunu yükler. Apache için TLS'yi yapılandırma hakkında bilgi edinmek isterseniz HTTP Secure'u (HTTPS) Etkinleştirme ziyaret edin.

Portalı bir üretim ortamına dağıtabilmek için önce kendi TLS sertifikanızı almanız gerekir.

Ek TLS ayarlarını yapılandırma

Portalda TLS'de yapılandırma değişiklikleri yapmak için 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: ini_set.

sites/default/settings.local.php (bulut) veya sites/default/settings.php (Private Cloud) 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_maslifetime ve cookie_lifetime: (İsteğe bağlı) gc_lifeteime verilerin kaç saniye sonra temizlenebileceğini belirtir. 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'yi ayarlama hakkında daha fazla bilgi için Pantheon doküman sitesindeki Güvenli HTTPS İletişimi için SSL'yi Etkinleştir 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 yük dengeleyiciler https:// üzerinden gönderilen iletilerin şifresini çözer ve iletileri http:// üzerinden arka uç sunucularına yönlendirir. Böylece arka uç sunucuları, https:// mesajlarının şifresini çözmenin ek yükünü ortadan kaldırır.

Yük dengeleyiciler şifrelenmemiş http mesajlarını aynı veri merkezindeki sunuculara yönlendiriyorsa güvenlik sorun teşkil etmez. Ancak yük dengeleyiciler mesajları http:// üzerinden veri merkezi dışındaki sunuculara yönlendirirse (ör. Apigee geliştirici portalınız) 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ındaysa ve tüm trafiğin https:// üzerinden sunulmasını istiyorsanız web sitesi sayfalarında yalnızca https:// bağlantıları bulunmalıdır. Ayrıca, sites/default/settings.local.php (bulut) veya sites/default/settings.php (Private Cloud) dosyanıza 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, 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. Gerekli güncellemeler, HTTPS'ye aynı ana makine adında mı yoksa birden fazla ana makine adıyla mı yönlendirme yaptığınıza bağlı olarak değişiklik gösterir.

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

Tüm portal trafiğini aynı ana makine adında (örneğin, *.devportal.Apigee.io) 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.

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

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