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 bulut tabanlı barındırma hizmeti olan Pantheon veya Acquia'dan yapılandırın kullanıma sunduk.
  • Apigee Edge for Private Cloud: Sunucuda şirket içi TLS'yi yapılandırma tüm bu bilgileri paylaşacağım.
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, Google’da portal, aslında Edge'in üzerinde depolanıyor. Edge'in bulut üzerinden ya da Private Cloud kurulumu olarak şirket içinde kullanabilirsiniz. Gerektiğinde portal bir HTTP veya HTTPS bilgi almak veya bilgi göndermek için Edge Management API'ye istek gönderme.
    .
    . Portalınızı oluştururken gerçekleştirmeniz gereken ilk adımlardan biri sitenizin URL'sini belirtmektir: Edge Management API'yi keşfedin. Edge management API'nin nasıl yapılandırıldığına bağlı olarak bu URL TLS kullanabilir. Oluşturma geliştirici portalına gidin.
  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 portalına göz atmayı unutmayın. Giriş kimlik bilgileri ve API anahtarı: HTTPS üzerinden göndermek istediğiniz özel bilgilerin güvenliğini sağlar. Bu HTTPS üzerinden gönderilmelidir.
    .
    . Bu senaryo için TLS'yi yapılandırma şekliniz, portal: bulut veya Private Cloud için Apigee Edge. Aşağıdaki bölümlerde aşağıdaki bölümlerde açıklanmıştır: iki senaryoda da geçerlidir.

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

Edge management API yapılandırması, iletişimin TLS. 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, bir portal geliştiricisi olarak sadece Edge'in portal ile Kenar.

Edge management API bağlantısını yapılandırmada kullandığınız prosedür için bkz. Geliştirici oluşturma portalı olacaktır.

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

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

Edge'in Private Cloud yüklemesi

Edge'in Private Cloud kurulumunda Edge management API'nin URL'si form:
http://EdgePrivateCloudIp:8080/v1
veya:
https://EdgePrivateCloudIp:TLSport/v1

Burada EdgePrivateCloudIp Edge Management'ın IP adresidir Sunucu sunucusu ve TLSport, 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

Geliştiriciler ve portal arasında TLS'yi yapılandırma şekliniz, sayfayı nasıl dağıttığınıza portal: bulut 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 sayfasına bakın.

Özel İçin Edge Bulut portalları

Portal için Apigee'nin önerdiği tüm Private Cloud kurulumları için portalın aşağıdaki gibi bir yük dengeleyicinin arkasına yerleştirin:

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

  • Configure TLS on the Load Balance (Yük dengeleyicide TLS'yi yapılandırma): Yük dengeleyicide TLS'yi yapılandırma portalda değil. 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 ekleyebilirsiniz.
  • TLS'yi portalda yapılandırın: Gerekirse TLS'yi şurada yapılandırabilirsiniz: portalını barındıran web sunucusu da olur. Daha fazla bilgi için Kullanılacak portalı yapılandırma HTTPS sayfasını ziyaret edin.

Portalı bir üretime dağıtmadan önce kendi TLS sertifikanızı almanız gerekir bahsedeceğim.

Yapılandırılıyor ek TLS ayarları

sites/default/settings.local.php (bulut) dosyasını düzenleyebilirsiniz veya sites/default/settings.php (Gizli Cloud) dosyasını kullanarak portal için TLS'de yapılandırma değişiklikleri yapın.

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.

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

  • cookie_httponly: (Önerilir) Çerezin yalnızca HTTP protokolü üzerinden erişilebilir olduğunu belirtir. Bunu ayarla mülk şu şekildedir:

    . 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ışır. 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 potansiyel olarak kaç saniye sonra temizlenebileceğini belirtir ve cookie_lifetime, süresi (saniye cinsinden) 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 bkz. Pantheon doküman sitesinde Güvenli HTTPS İletişimi için SSL'yi etkinleştirin.

Yapılandırılıyor Yük Dengeleyicilerle TLS

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 arka uca yönlendirir http:// üzerinden gelen sunuculara izin verilmez. Kazancınızı arka uç sunucularına https:// mesajlarının şifresini çözmenin ek yükünü de bırakır.

Yük dengeleyiciler şifrelenmemiş http mesajlarını aynı veri merkezindeki sunuculara yönlendirirse bir sorun değildir. Ancak yük dengeleyiciler iletileri http:// üzerinden verilerin dışındaki sunuculara yönlendirirse (ör. Apigee geliştirici portalınızda olduğu gibi) mesajlar şifrelenmemiş haldedir. Bu da olduğunu unutmayın.

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ının yalnızca https:// bağlantıları içermelidir Şu kodu geliştirici portalınıza eklemeniz gerekir: sites/default/settings.local.php (bulut) veya sites/default/settings.php (Gizli Cloud) dosyası. Yük dengeleyici, feed'inizin içeriğini otomatik olarak Bu 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) dosyasına ekleyin veya sites/default/settings.php (Gizli Cloud) dosyası:

// 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) dosyanızı güncelleyerek tüm portal trafiğini HTTPS'ye yönlendirebilirsiniz veya sites/default/settings.php (Gizli Cloud) dosyası. Gerekli güncellemeler, aynı ana makine adı veya birden fazla ana makine adı.

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

Aşağıdaki kodu sites/default/settings.local.php (bulut) dosyasına ekleyin veya sites/default/settings.php (Private Cloud) dosyasını kullanarak tüm portal trafiğini aynı ana makine adında HTTPS'ye yönlendirme (örneğin, *.devportal.apigee.io)

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

Şuraya yönlendiriliyor: Birden fazla ana makine adında HTTPS

Şu kodu sites/default/settings.local.php dosyanıza (bulut) ekleyin veya sites/default/settings.php dosyasını (Private Cloud) kullanarak birden fazla ana makine adında tüm portal trafiğini HTTPS'ye yönlendirmelidir.

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