পোর্টালে TLS ব্যবহার করা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

আপনি TLS ব্যবহার করার জন্য পোর্টাল কনফিগার করতে পারেন। পোর্টালের জন্য TLS কনফিগারেশন পদ্ধতি নির্ভর করে আপনি কীভাবে পোর্টালটি স্থাপন করেছেন তার উপর:

  • ক্লাউড : প্যানথিয়ন বা অ্যাকুইয়া থেকে TLS কনফিগার করুন, পোর্টালের জন্য ক্লাউড-ভিত্তিক হোস্টিং পরিষেবা।
  • ব্যক্তিগত ক্লাউডের জন্য Apigee এজ : পোর্টাল হোস্ট করা সার্ভারে TLS অন-প্রিমিসেস কনফিগার করুন।

TLS এবং পোর্টাল

নিম্নলিখিত চিত্রটি দুটি স্থান দেখায় যেখানে পোর্টালটি TLS ব্যবহার করে:

  1. পোর্টাল এবং এজ ম্যানেজমেন্ট API-এর মধ্যে যোগাযোগের জন্য।

    পোর্টালটি একটি স্বতন্ত্র সিস্টেম হিসাবে কাজ করে না। পরিবর্তে, পোর্টালের দ্বারা ব্যবহৃত বেশিরভাগ তথ্য আসলে এজ-এ সংরক্ষিত থাকে, যেখানে এজকে ক্লাউডে বা প্রাইভেট ক্লাউড ইনস্টলেশন হিসাবে প্রাঙ্গনে স্থাপন করা যেতে পারে। যখন প্রয়োজন হয়, পোর্টালটি তথ্য পুনরুদ্ধার করতে বা তথ্য পাঠানোর জন্য এজ ম্যানেজমেন্ট এপিআইকে একটি HTTP বা HTTPS অনুরোধ করে।

    যখন আপনি আপনার পোর্টাল তৈরি করেন, আপনাকে অবশ্যই প্রথম পদক্ষেপগুলির মধ্যে একটি হল এজ ম্যানেজমেন্ট API-এর URL নির্দিষ্ট করা। এজ ম্যানেজমেন্ট API কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে, সেই URL টিএলএস ব্যবহার করতে পারে। আরও জানতে একটি বিকাশকারী পোর্টাল তৈরি করা দেখুন।
  2. বিকাশকারী এবং পোর্টালের মধ্যে যোগাযোগের জন্য।

    আপনি যখন আপনার API গুলি স্থাপন করতে বিকাশকারী পরিষেবা পোর্টাল ব্যবহার করেন, তখন আপনার বিকাশকারীরা অ্যাপগুলি নিবন্ধন করতে এবং API কীগুলি পেতে পোর্টালে লগ ইন করে৷ লগইন শংসাপত্র এবং API কী হল মালিকানাধীন তথ্য যা আপনি তাদের নিরাপত্তা নিশ্চিত করতে HTTPS-এ পাঠাতে চান। এই ধরনের মালিকানা তথ্য HTTPS এর মাধ্যমে পাঠানো উচিত।

    এই দৃশ্যের জন্য আপনি যেভাবে TLS কনফিগার করবেন তা নির্ভর করে আপনি কীভাবে পোর্টালটি স্থাপন করেছেন: ক্লাউড বা ব্যক্তিগত ক্লাউডের জন্য এপিজি এজ। নিম্নলিখিত বিভাগগুলি উভয় পরিস্থিতি বর্ণনা করে।

পোর্টাল এবং এজ ম্যানেজমেন্ট API-এর মধ্যে TLS কনফিগার করা হচ্ছে

এজ ম্যানেজমেন্ট API-এর কনফিগারেশন নির্ধারণ করে যে যোগাযোগ TLS ব্যবহার করতে পারে কিনা। যদি এজ ম্যানেজমেন্ট API টিএলএস ব্যবহার করার জন্য কনফিগার করা হয়, তাহলে পোর্টালটি HTTPS ব্যবহার করতে পারে। অন্যথায়, পোর্টালটি HTTP এর মাধ্যমে এজের সাথে যোগাযোগ করে। অতএব, একজন পোর্টাল ডেভেলপার হিসাবে, আপনাকে শুধুমাত্র পোর্টাল এবং এজের মধ্যে সংযোগ সেট করতে এজ কীভাবে কনফিগার করা হয়েছে তা জানতে হবে।

এজ ম্যানেজমেন্ট API-এর সাথে সংযোগ কনফিগার করার জন্য আপনি যে পদ্ধতিটি ব্যবহার করেন তার জন্য, একটি বিকাশকারী পোর্টাল তৈরি করা দেখুন।

এজ-এর ক্লাউড-ভিত্তিক সংস্করণ

যদি আপনার পোর্টাল এজ-এর ক্লাউড-ভিত্তিক সংস্করণের সাথে সংযোগ করে, তাহলে এজ ম্যানেজমেন্ট API-এর URL টিএলএস ব্যবহার করার জন্য Apigee দ্বারা প্রি-কনফিগার করা হয়েছে। পোর্টাল কনফিগার করার সময়, আপনি https://api.enterprise.apigee.com/v1 URL ব্যবহার করে এজ ম্যানেজমেন্ট API অ্যাক্সেস করেন।

এজ এর ব্যক্তিগত ক্লাউড ইনস্টলেশন

এজ-এর একটি ব্যক্তিগত ক্লাউড ইনস্টলেশনের জন্য, এজ ম্যানেজমেন্ট এপিআই-এর URLটি এই ফর্মে রয়েছে:
http:// EdgePrivateCloudIp :8080/v1
বা:
https:// EdgePrivateCloudIp : TLSport /v1

যেখানে EdgePrivateCloudIp হল এজ ম্যানেজমেন্ট সার্ভার সার্ভারের IP ঠিকানা এবং TLSport হল এজ ম্যানেজমেন্ট API-এর জন্য TLS পোর্ট। উদাহরণস্বরূপ, এজ কনফিগারেশনের উপর ভিত্তি করে পোর্ট নম্বরটি 8443 বা এমনকি 8080 হতে পারে।

বিকাশকারী এবং পোর্টালের মধ্যে TLS কনফিগার করা হচ্ছে

বিকাশকারী এবং পোর্টালের মধ্যে আপনি যেভাবে TLS কনফিগার করবেন তা নির্ভর করে আপনি কীভাবে পোর্টালটি স্থাপন করেছেন তার উপর: ক্লাউড বা ব্যক্তিগত ক্লাউডের জন্য এপিজি এজ।

ক্লাউড-ভিত্তিক পোর্টাল

প্যান্থিয়ন

প্যানথিয়ন তার প্ল্যাটফর্মে সমস্ত সাইটের জন্য প্যানথিয়ন গ্লোবাল CDN এর মাধ্যমে এবং Let's Encrypt ব্যবহার করে বিনামূল্যে স্বয়ংক্রিয় HTTPS প্রদান করে। এছাড়াও প্যানথিয়নের গ্লোবাল সিডিএন-এ HTTPS দেখুন।

অ্যাকুইয়া

Acquia ব্যবহার করে TLS/SSL সক্ষম করতে, SSL সক্ষম করা দেখুন।

প্রাইভেট ক্লাউড পোর্টালের জন্য এজ

সমস্ত Apigee প্রস্তাবিত পোর্টালের ব্যক্তিগত ক্লাউড ইনস্টলেশনের জন্য পোর্টালটিকে একটি লোড ব্যালেন্সারের পিছনে থাকা প্রয়োজন, যেমনটি নীচে দেখানো হয়েছে:

অতএব, অন-প্রিমিসেস ইনস্টলেশনের জন্য, আপনার কাছে TLS কনফিগার করার জন্য দুটি বিকল্প রয়েছে:

  • লোড ব্যালেন্সারে TLS কনফিগার করুন : পোর্টালে নয়, লোড ব্যালেন্সারেই TLS কনফিগার করুন। TLS কনফিগার করার জন্য আপনি যে পদ্ধতিটি ব্যবহার করেন তা তাই লোড ব্যালেন্সারের উপর নির্ভরশীল। আরও তথ্যের জন্য আপনার লোড ব্যালেন্সারের ডকুমেন্টেশন দেখুন।
  • পোর্টালেই TLS কনফিগার করুন : প্রয়োজনে, আপনি পোর্টাল হোস্ট করা ওয়েব সার্ভারে TLS কনফিগার করতে পারেন। আরও তথ্যের জন্য HTTPS ব্যবহার করতে পোর্টাল কনফিগার করা দেখুন।

আপনি একটি উত্পাদন পরিবেশে পোর্টাল স্থাপন করার আগে আপনার নিজের TLS শংসাপত্র প্রাপ্ত করতে হবে।

অতিরিক্ত TLS সেটিংস কনফিগার করা হচ্ছে

পোর্টালের জন্য TLS-এ কনফিগারেশন পরিবর্তন করতে আপনি sites/default/settings.local.php (ক্লাউড) বা sites/default/settings.php (ব্যক্তিগত ক্লাউড) ফাইল সম্পাদনা করতে পারেন।

ফাইল সম্পাদনা করার সময়, একটি বৈশিষ্ট্য সেট করতে 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);

বিকাশকারী পোর্টাল এবং ক্লায়েন্টদের মধ্যে TLS সেট আপ করার বিষয়ে আরও তথ্যের জন্য, প্যানথিয়ন ডক সাইটে সুরক্ষিত HTTPS যোগাযোগের জন্য SSL সক্ষম করুন দেখুন।

লোড ব্যালেন্সারের সাথে TLS কনফিগার করা হচ্ছে

ভালো পারফরম্যান্সের জন্য, লোড ব্যালেন্সারগুলিকে মাঝে মাঝে 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 ফাইলে (ক্লাউড) অথবা সাইট/ডিফল্ট/ 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;
  }
}