استفاده از «امنیت لایه انتقال» در درگاه

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

می‌توانید درگاه را پیکربندی کنید تا از «امنیت لایه انتقال» استفاده کند. روال پیکربندی «امنیت لایه انتقال» برای درگاه به نحوه استقرار درگاه بستگی دارد:

  • Cloud (ابر): «امنیت لایه انتقال» را از Pantheon یا Acquia، سرویس‌های میزبانی مبتنی بر ابر برای درگاه، پیکربندی کنید.
  • Apigee Edge for Private Cloud: «امنیت لایه انتقال» را در محل در سروری که میزبان درگاه است پیکربندی کنید.

«امنیت لایه انتقال» و درگاه

تصویر زیر دو جایی را نشان می‌دهد که در آنجا درگاه از «امنیت لایه انتقال» استفاده می‌کند:

  1. برای ارتباط بین درگاه و «میانای برنامه‌سازی کاربردی مدیریت Edge».

    درگاه به‌عنوان یک سیستم مستقل عمل نمی‌کند. درعوض، بیشتر اطلاعاتی که درگاه استفاده می‌کند درواقع در Edge ذخیره می‌شود، جایی که Edge می‌تواند هم در فضای ابری و هم در محل به‌عنوان نصب «ابر خصوصی» مستقر شود. درصورت لزوم، درگاه برای بازیابی اطلاعات یا ارسال اطلاعات، درخواست HTTP یا HTTPS به Edge management API ارسال می‌کند.

    وقتی درحال ایجاد کردن درگاهتان هستید، یکی از اولین گام‌هایی که باید انجام دهید مشخص کردن نشانی وب «میانای برنامه‌سازی کاربردی مدیریت Edge» است. بسته به نحوه پیکربندی «میانای برنامه‌سازی کاربردی مدیریت Edge»، آن نشانی وب می‌تواند از «امنیت لایه انتقال» استفاده کند. برای اطلاعات بیشتر، ایجاد درگاه توسعه‌دهنده را ببینید.
  2. برای ارتباط بین توسعه‌دهندگان و درگاه.

    وقتی از درگاه «خدمات توسعه‌دهندگان» برای استقرار میاناهای برنامه‌سازی کاربردی استفاده می‌کنید، توسعه‌دهندگان شما برای ثبت برنامه‌ها و دریافت کلیدهای میانای برنامه‌سازی کاربردی به سیستم درگاه وارد می‌شوند. اطلاعات اعتباری ورود به سیستم و کلید API اطلاعات اختصاصی هستند که می‌خواهید ازطریق HTTPS ارسال کنید تا امنیت آن‌ها تضمین شود. این نوع اطلاعات اختصاصی باید ازطریق HTTPS ارسال شود.

    نحوه پیکربندی TLS برای این سناریو به نحوه استقرار درگاه بستگی دارد: ابری یا Apigee Edge برای «ابر خصوصی». بخش‌های زیر هر دو سناریو را توضیح می‌دهند.

پیکربندی «امنیت لایه انتقال» بین درگاه و «میانای برنامه‌سازی کاربردی مدیریت Edge»

پیکربندی «میانای برنامه‌سازی کاربردی مدیریت Edge» تعیین می‌کند که آیا ارتباط می‌تواند از «امنیت لایه انتقال» استفاده کند یا نه. اگر «میانای برنامه‌سازی کاربردی مدیریت Edge» برای استفاده از TLS پیکربندی شده باشد، درگاه می‌تواند از HTTPS استفاده کند. درغیراین‌صورت، درگاه ازطریق HTTP با Edge ارتباط برقرار می‌کند. بنابراین، به‌عنوان توسعه‌دهنده درگاه، فقط باید بدانید که Edge چگونه پیکربندی شده است تا اتصال بین درگاه و Edge را تنظیم کنید.

برای رویه‌ای که برای پیکربندی اتصال به Edge management API استفاده می‌کنید، به ایجاد درگاه توسعه‌دهنده مراجعه کنید.

نسخه ابری Edge

اگر درگاهتان به نسخه ابری Edge متصل می‌شود، نشانی وب «میانای برنامه‌سازی کاربردی مدیریت Edge» ازقبل توسط Apigee پیکربندی شده است تا از «امنیت لایه انتقال» استفاده کند. هنگام پیکربندی درگاه، بااستفاده از نشانی وب https://api.enterprise.apigee.com/v1 به Edge management API دسترسی پیدا می‌کنید.

نصب «ابر خصوصی» Edge

برای نصب «ابر خصوصی» Edge، نشانی وب Edge management API در قالب زیر است:
http://EdgePrivateCloudIp:8080/v1
یا:
https://EdgePrivateCloudIp:TLSport/v1

که در آن EdgePrivateCloudIp نشانی IP سرور «سرور مدیریت Edge» است و TLSport درگاه «امنیت لایه انتقال» برای Edge management API است. برای مثال، شماره درگاه می‌تواند براساس پیکربندی Edge،‏ ۸۴۴۳ یا حتی ۸۰۸۰ باشد.

درحال پیکربندی «امنیت لایه انتقال» بین توسعه‌دهندگان و درگاه

نحوه پیکربندی کردن TLS بین توسعه‌دهندگان و درگاه به نحوه استقرار درگاه بستگی دارد: ابر یا Apigee Edge برای «ابر خصوصی».

درگاه‌های مبتنی بر فضای ابری

Pantheon

‫Pantheon ازطریق Pantheon Global CDN و بااستفاده از Let's Encrypt، برای همه سایت‌های موجود در پلاتفرم خود HTTPS خودکارسازی‌شده رایگان ارائه می‌دهد. HTTPS در CDN جهانی Pantheon را نیز ببینید.

Acquia

برای فعال کردن TLS/SSL بااستفاده از Acquia، به فعال کردن SSL مراجعه کنید.

‫Edge برای درگاه‌های «ابر خصوصی»

همه نصب‌های «ابر خصوصی» توصیه‌شده Apigee برای درگاه نیازمند این است که درگاه پشت ترازکننده بار باشد، همان‌طور که در زیر نشان داده شده است:

بنابراین، برای نصب‌های محلی، دو گزینه برای پیکربندی «امنیت لایه انتقال» دارید:

  • پیکربندی «امنیت لایه انتقال» در ترازکننده بار: «امنیت لایه انتقال» را در خود ترازکننده بار پیکربندی کنید، نه در درگاه. بنابراین، روشی که برای پیکربندی TLS استفاده می‌کنید به ترازکننده بار بستگی دارد. برای اطلاعات بیشتر، مستندات ترازکننده بار را ببینید.
  • پیکربندی «امنیت لایه انتقال» در خود درگاه: درصورت لزوم، می‌توانید «امنیت لایه انتقال» را در سرور وبی که میزبان درگاه است پیکربندی کنید. برای اطلاعات بیشتر، پیکربندی درگاه برای استفاده از HTTPS را ببینید.

قبل‌از اینکه بتوانید درگاه را در محیط تولید مستقر کنید، باید گواهینامه TLS خودتان را دریافت کنید.

درحال پیکربندی تنظیمات تکمیلی «امنیت لایه انتقال»

می‌توانید فایل sites/default/settings.local.php (ابر) یا sites/default/settings.php (ابر خصوصی) را ویرایش کنید تا تغییرات پیکربندی را در TLS برای درگاه اعمال کنید.

هنگام ویرایش فایل، نمونه‌هایی از تابع ini_set() را برای تنظیم ویژگی اضافه کنید. برای اطلاعات بیشتر درباره این تابع، به این نشانی مراجعه کنید: http://php.net/manual/en/function.ini-set.php.

می‌توانید ویژگی‌های زیر را در فایل sites/default/settings.local.php (ابر) یا sites/default/settings.php (ابر خصوصی) تنظیم کنید:

  • cookie_httponly: (توصیه‌شده) مشخص می‌کند که کوکی فقط ازطریق پروتکل HTTP دردسترس باشد. این خصوصیت را به‌صورت زیر تنظیم کنید:

    ini_set('session.cookie_httponly', true);
  • session.cookie_secure - (اختیاری) مشخص می‌کند که کوکی‌ها فقط ازطریق اتصال‌های امن ارسال شوند. بااین‌حال، این یعنی همه محتوا باید ازطریق HTTPS ارائه شود. اگر این تنظیم فعال باشد، سایت ازطریق HTTP کار نخواهد کرد. این دارایی را به‌صورت زیر تنظیم کنید:

    ini_set('session.cookie_secure', true);
  • gc_maxlifetime و cookie_lifetime: (اختیاری) gc_lifeteime تعداد ثانیه‌هایی را که پس‌از آن داده‌ها می‌توانند به‌طور بالقوه پاک‌سازی شوند مشخص می‌کند، و cookie_lifetime طول عمر کوکی را برحسب ثانیه مشخص می‌کند. این دارایی‌ها را به‌صورت زیر تنظیم کنید:

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

برای کسب اطلاعات بیشتر درباره راه‌اندازی «امنیت لایه انتقال» بین درگاه توسعه‌دهندگان و مشتریان، به فعال کردن SSL برای ارتباط ایمن HTTPS در سایت اسناد Pantheon مراجعه کنید.

درحال پیکربندی «امنیت لایه انتقال» با ترازکننده‌های بار

برای عملکرد بهتر، ترازکننده‌های بار گاهی اوقات برای انجام فسخ TLS پیکربندی می‌شوند. با پایان دادن به TLS، ترازکننده‌های بار پیام‌های ارسالی ازطریق https:// را رمزگشایی می‌کنند و پیام‌ها را ازطریق http:// به سرورهای زیرینه بازارسال می‌کنند. این کار سرورهای زیرینه را از سربار رمزگشایی پیام‌های https:// معاف می‌کند.

اگر ترازکننده‌های بار پیام‌های http رمزگذاری‌نشده را به سرورهای موجود در همان مرکز داده ارسال کنند، امنیت مشکلی ایجاد نمی‌کند. بااین‌حال، اگر ترازکننده‌های بار پیام‌ها را ازطریق http:// به سرورهای خارج از مرکز داده (مثل درگاه توسعه‌دهنده Apigee) بازارسال کنند، پیام‌ها رمزگذاری نمی‌شوند و این امر روزنه امنیتی ایجاد می‌کند.

اگر درگاه توسعه‌دهنده شما پشت ترازکننده‌های بار قرار دارد که از فسخ TLS استفاده می‌کنند و می‌خواهید همه ترافیک ازطریق https:// ارائه شود، صفحات وب‌سایت باید فقط حاوی پیوندهای https:// باشد و باید کد زیر را به فایل sites/default/settings.local.php (ابر) یا sites/default/settings.php (ابر خصوصی) در درگاه توسعه‌دهنده خود اضافه کنید. ازآنجایی‌که ترازکننده بار به‌طور خودکار محتوای صفحات HTML را تبدیل نمی‌کند، این کد تضمین می‌کند که همه پیوندهای ارسال‌شده به مشتری با https:// شروع شوند.

برای پیکربندی TLS با ترازکننده‌های بار، خطوط زیر را به فایل sites/default/settings.local.php (ابر) یا sites/default/settings.php (ابر خصوصی) اضافه کنید:

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

برای اطلاعات بیشتر، به اینجا مراجعه کنید:

درحال هدایت ترافیک درگاه به HTTPS

با به‌روزرسانی فایل sites/default/settings.local.php (ابر) یا sites/default/settings.php (ابر خصوصی) می‌توانید همه ترافیک درگاه را به HTTPS هدایت کنید. به‌روزرسانی‌های موردنیاز براساس اینکه به HTTPS در همان نام میزبان یا چندین نام میزبان هدایت می‌کنید متفاوت است.

درحال هدایت به HTTPS در همان نام میزبان

کد زیر را به فایل sites/default/settings.local.php (ابر) یا sites/default/settings.php (ابر خصوصی) اضافه کنید تا همه ترافیک درگاه به HTTPS در همان نام میزبان (برای نمونه، *.devportal.apigee.io) هدایت شود.

در این سناریو، اگر توسعه‌دهنده‌ای درحال بازدید از درگاه شما در live-example.devportal.apigee.io باشد، اما نیاز داشته باشد به گواهینامه‌ای که برای devportal.example.com بارگذاری شده است دسترسی پیدا کند، درخواست ناموفق خواهد بود.

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

درحال هدایت به HTTPS در چندین نام میزبان

کد زیر را به فایل sites/default/settings.local.php (ابر) یا فایل sites/default/settings.php (ابر خصوصی) اضافه کنید تا همه ترافیک درگاه به HTTPS در چندین نام میزبان هدایت شود.

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