استفاده از TLS در پورتال

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

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

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

TLS و پورتال

تصویر زیر دو مکان را نشان می دهد که درگاه از TLS استفاده می کند:

  1. برای ارتباط بین پورتال و API مدیریت Edge.

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

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

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

    نحوه پیکربندی TLS برای این سناریو به نحوه استقرار پورتال بستگی دارد: ابر یا Apigee Edge برای Private Cloud. بخش های زیر هر دو سناریو را توضیح می دهند.

پیکربندی TLS بین پورتال و API مدیریت Edge

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

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

نسخه مبتنی بر ابر Edge

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

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

برای نصب ابر خصوصی Edge، URL API مدیریت Edge به شکل زیر است:
http:// EdgePrivateCloudIp :8080/v1؟
یا:
https:// EdgePrivateCloudIp : TLSport /v1

که در آن EdgePrivateCloudIp آدرس IP سرور Edge Management Server و TLSport پورت TLS برای API مدیریت Edge است. به عنوان مثال، شماره پورت بر اساس پیکربندی Edge می تواند 8443 یا حتی 8080 باشد.

پیکربندی TLS بین توسعه دهندگان و پورتال

نحوه پیکربندی TLS بین توسعه دهندگان و پورتال به نحوه استقرار پورتال بستگی دارد: ابر یا Apigee Edge برای Private Cloud.

پورتال های مبتنی بر ابر

پانتئون

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

آکویا

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

لبه برای پورتال های ابر خصوصی

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

بنابراین، برای نصب در محل، دو گزینه برای پیکربندی TLS دارید:

  • پیکربندی TLS در بار متعادل کننده : TLS را روی خود متعادل کننده بار پیکربندی کنید، نه در پورتال. روشی که برای پیکربندی TLS استفاده می‌کنید، به تعادل‌کننده بار بستگی دارد. برای اطلاعات بیشتر به مستندات مربوط به متعادل کننده بار خود مراجعه کنید.
  • پیکربندی TLS در خود پورتال : در صورت لزوم، می توانید TLS را در وب سروری که میزبان پورتال است پیکربندی کنید. به طور پیش فرض، Apigee وب سرور آپاچی را نصب می کند. برای اطلاعات در مورد پیکربندی TLS برای Apache، به فعال کردن HTTP Secure (HTTPS) مراجعه کنید.

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

پیکربندی تنظیمات اضافی TLS

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

هنگام ویرایش فایل، نمونه هایی از تابع ini_set() را برای تنظیم یک ویژگی اضافه کنید. برای اطلاعات بیشتر در مورد این تابع، نگاه کنید به: ini_set .

می‌توانید ویژگی‌های زیر را در فایل 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_maslifetime و cookie_lifetime : (اختیاری) gc_lifeteime تعداد ثانیه هایی را که پس از آن داده ها به طور بالقوه پاک می شوند و cookie_lifetime طول عمر کوکی را بر حسب ثانیه مشخص می کند. این خصوصیات را به صورت زیر تنظیم کنید:

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

برای اطلاعات بیشتر در مورد تنظیم TLS بین پورتال توسعه‌دهنده و مشتریان، به فعال کردن SSL برای ارتباط امن HTTPS در سایت Pantheon doc مراجعه کنید.

پیکربندی TLS با بار متعادل کننده

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

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

اگر پورتال توسعه‌دهنده شما پشت بار متعادل‌کننده‌هایی قرار دارد که از پایان TLS استفاده می‌کنند و می‌خواهید تمام ترافیک از طریق https:// ارائه شود، صفحات وب‌سایت فقط باید حاوی پیوندهای https:// باشند و باید کد زیر را به خود اضافه کنید. فایل سایت‌های پورتال توسعه‌دهنده/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 (Private Cloud) خود اضافه کنید تا به تمام ترافیک پورتال به 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 فایل (Private Cloud) خود اضافه کنید تا به تمام ترافیک پورتال به 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;
  }
}