আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
TLS ব্যবহার করার জন্য আপনি পোর্টাল কনফিগার করতে পারবেন। আপনি কীভাবে পোর্টাল ডেপ্লয় করেছেন তার উপর নির্ভর করে পোর্টালের TLS কনফিগারেশন পদ্ধতি নির্ধারণ করা হয়:
- ক্লাউড: পোর্টালের জন্য ক্লাউড-ভিত্তিক হোস্টিং পরিষেবা Pantheon বা Acquia থেকে TLS কনফিগার করুন।
- প্রাইভেট ক্লাউডের জন্য Apigee Edge: পোর্টাল হোস্ট করা সার্ভারে অন-প্রিমিস TLS কনফিগার করুন।
TLS ও পোর্টাল
নিচের ছবিতে দুটি জায়গা দেখানো হয়েছে যেখানে পোর্টাল TLS ব্যবহার করে:

- পোর্টাল ও Edge ম্যানেজমেন্ট API-এর মধ্যে যোগাযোগের জন্য।
পোর্টালটি স্বতন্ত্র সিস্টেম হিসেবে কাজ করে না। পরিবর্তে, পোর্টালটি যেসব তথ্য ব্যবহার করে তার বেশিরভাগই Edge-এ সেভ করা থাকে, যেখানে Edge-কে ক্লাউডে বা প্রাইভেট ক্লাউড ইনস্টলেশন হিসেবে অন-প্রিমিজে ডেপ্লয় করা যেতে পারে। প্রয়োজন হলে, পোর্টালটি Edge ম্যানেজমেন্ট API-তে HTTP বা HTTPS অনুরোধ করে তথ্য পেতে বা তথ্য পাঠাতে।
আপনি পোর্টাল তৈরি করার সময়, আপনাকে অবশ্যই Edge ম্যানেজমেন্ট API-এর URL নির্দিষ্ট করতে হবে। এটি হল প্রথম ধাপগুলির মধ্যে একটি। Edge ম্যানেজমেন্ট API কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে, সেই URL TLS ব্যবহার করতে পারে। আরও জানতে ডেভেলপার পোর্টাল তৈরি করা দেখুন। - ডেভেলপার ও পোর্টালের মধ্যে যোগাযোগের জন্য।
আপনার API ডেপ্লয় করার জন্য ডেভেলপার পরিষেবা পোর্টাল ব্যবহার করলে, আপনার ডেভেলপাররা অ্যাপ রেজিস্টার করতে এবং API কী পেতে পোর্টালটিতে লগ-ইন করেন। লগ-ইন ক্রেডেনশিয়াল ও API কী হল মালিকানাধীন তথ্য যা আপনি HTTPS-এর মাধ্যমে পাঠাতে চান যাতে সেগুলি সুরক্ষিত থাকে। এই ধরনের মালিকানাধীন তথ্য HTTPS-এর মাধ্যমে পাঠানো উচিত।
এই পরিস্থিতির জন্য আপনি যেভাবে TLS কনফিগার করবেন তা নির্ভর করে আপনি কীভাবে পোর্টালটি ডেপ্লয় করেছেন তার উপর: ক্লাউড বা প্রাইভেট ক্লাউডের জন্য Apigee Edge. নিচের বিভাগে দুটি পরিস্থিতিই বর্ণনা করা হয়েছে।
পোর্টাল ও Edge ম্যানেজমেন্ট API-এর মধ্যে TLS কনফিগার করা
Edge ম্যানেজমেন্ট API-এর কনফিগারেশন নির্ধারণ করে যে যোগাযোগের ক্ষেত্রে TLS ব্যবহার করা যাবে কিনা। Edge ম্যানেজমেন্ট API, TLS ব্যবহার করার জন্য কনফিগার করা থাকলে, পোর্টাল HTTPS ব্যবহার করতে পারবে। অন্যথায়, পোর্টালটি HTTP-এর মাধ্যমে Edge-এর সাথে যোগাযোগ করে। তাই, পোর্টাল ডেভেলপার হিসেবে, আপনাকে শুধু জানতে হবে যে কীভাবে Edge কনফিগার করা হয় যাতে পোর্টাল এবং Edge-এর মধ্যে কানেকশন সেট করা যায়।
Edge ম্যানেজমেন্ট API-তে কানেকশন কনফিগার করার জন্য আপনি যে পদ্ধতি ব্যবহার করেন, তার জন্য ডেভেলপার পোর্টাল তৈরি করা দেখুন।
Edge-এর ক্লাউড-ভিত্তিক ভার্সন
আপনার পোর্টাল Edge-এর ক্লাউড-ভিত্তিক ভার্সনের সাথে কানেক্ট করলে, Edge ম্যানেজমেন্ট API-এর URL, TLS ব্যবহার করার জন্য Apigee-এর মাধ্যমে আগে থেকেই কনফিগার করা থাকে। পোর্টাল কনফিগার করার সময়, আপনি URL https://api.enterprise.apigee.com/v1 ব্যবহার করে Edge ম্যানেজমেন্ট API অ্যাক্সেস করেন।
Edge-এর প্রাইভেট ক্লাউড ইনস্টলেশন
Edge-এর প্রাইভেট ক্লাউড ইনস্টলেশনের জন্য, Edge ম্যানেজমেন্ট API-এর URL এই
ফর্মে থাকে:
http://EdgePrivateCloudIp:8080/v1
অথবা:
https://EdgePrivateCloudIp:TLSport/v1
যেখানে EdgePrivateCloudIp হল Edge ম্যানেজমেন্ট সার্ভার সার্ভারের IP অ্যাড্রেস এবং TLSport হল Edge ম্যানেজমেন্ট API-এর জন্য TLS পোর্ট। যেমন, Edge কনফিগারেশনের উপর ভিত্তি করে পোর্ট নম্বর ৮৪৪৩ বা এমনকি ৮০৮০ হতে পারে।
ডেভেলপার ও পোর্টালের মধ্যে TLS কনফিগার করা
আপনি কীভাবে ডেভেলপার ও পোর্টালের মধ্যে TLS কনফিগার করবেন তা নির্ভর করে আপনি কীভাবে পোর্টাল ডেপ্লয় করেছেন তার উপর: ক্লাউড বা প্রাইভেট ক্লাউডের জন্য Apigee Edge.
ক্লাউড-ভিত্তিক পোর্টাল
প্যান্থিয়ন
Pantheon তার প্ল্যাটফর্মে থাকা সব সাইটের জন্য Pantheon Global CDN এবং Let's Encrypt ব্যবহার করে অটোমেটিক HTTPS পরিষেবা প্রদান করে। এছাড়াও, Pantheon-এর গ্লোবাল CDN-এ HTTPS দেখুন।
Acquia
Acquia ব্যবহার করে TLS/SSL চালু করতে, SSL চালু করা দেখুন।প্রাইভেট ক্লাউড পোর্টালের জন্য Edge
পোর্টালের সব 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 সেট-আপ করা সম্পর্কে আরও তথ্য পেতে, Pantheon ডকুমেন্ট সাইটে নিরাপদ 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://drupal.org/node/425990
- https://drupal.org/node/313145
- http://drupal.stackexchange.com/questions/102091/drupal-behind-a-ssl-offloading-reverse-proxy-is-this-config-correct
HTTPS-এ পোর্টাল ট্রাফিক রিডাইরেক্ট করা
আপনার sites/default/settings.local.php (ক্লাউড) অথবা sites/default/settings.php (প্রাইভেট ক্লাউড) ফাইল আপডেট করে, আপনি সমস্ত পোর্টাল ট্রাফিক HTTPS-এ রিডাইরেক্ট করতে পারবেন। আপনি একই হোস্টনেম বা একাধিক হোস্টনেমে রিডাইরেক্ট করছেন কিনা তার উপর নির্ভর করে প্রয়োজনীয় আপডেট আলাদা আলাদা হয়।
একই হোস্টনেমে HTTPS-এ রিডাইরেক্ট করা হচ্ছে
আপনার sites/default/settings.local.php (ক্লাউড) অথবা sites/default/settings.php (প্রাইভেট ক্লাউড) ফাইলে নিম্নলিখিত কোড যোগ করে একই হোস্টনেমে (যেমন, *.devportal.apigee.io) সমস্ত পোর্টাল ট্রাফিক HTTPS-এ রিডাইরেক্ট করুন।
এই পরিস্থিতিতে, কোনও ডেভেলপার যদি 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-এ রিডাইরেক্ট করা
একাধিক হোস্টনেমে সমস্ত পোর্টাল ট্রাফিককে HTTPS-এ রিডাইরেক্ট করতে, আপনার 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; // 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; } }