पोर्टल पर TLS का इस्तेमाल करना

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

पोर्टल को TLS का इस्तेमाल करने के लिए कॉन्फ़िगर किया जा सकता है. पोर्टल के लिए टीएलएस कॉन्फ़िगरेशन की प्रोसेस, इस बात पर निर्भर करती है कि आपने पोर्टल को कैसे डिप्लॉय किया है:

  • क्लाउड: पोर्टल के लिए क्लाउड-आधारित होस्टिंग सेवाएं देने वाली Pantheon या Acquia से टीएलएस को कॉन्फ़िगर करें.
  • Apigee Edge for Private Cloud: पोर्टल को होस्ट करने वाले सर्वर पर, TLS को ऑन-प्रिमाइसेस कॉन्फ़िगर करें.

TLS और पोर्टल

इस इमेज में, उन दो जगहों के बारे में बताया गया है जहां पोर्टल, टीएलएस का इस्तेमाल करता है:

  1. इसका इस्तेमाल पोर्टल और Edge Management API के बीच कम्यूनिकेशन के लिए किया जाता है.

    पोर्टल, स्टैंड-अलोन सिस्टम के तौर पर काम नहीं करता. इसके बजाय, पोर्टल में इस्तेमाल की जाने वाली ज़्यादातर जानकारी Edge पर सेव की जाती है. Edge को क्लाउड में या प्राइवेट क्लाउड इंस्टॉलेशन के तौर पर कंपनी की इमारत में डिप्लॉय किया जा सकता है. ज़रूरत पड़ने पर पोर्टल, Edge मैनेजमेंट एपीआई को एचटीटीपी या एचटीटीपीएस अनुरोध करता है, ताकि जानकारी वापस मिल सके या जानकारी भेजी जा सके.

    पोर्टल बनाते समय, आपको सबसे पहले Edge Management API का यूआरएल तय करना होगा. Edge Management API को कैसे कॉन्फ़िगर किया गया है, इसके आधार पर वह यूआरएल TLS का इस्तेमाल कर सकता है. ज़्यादा जानकारी के लिए, डेवलपर पोर्टल बनाना लेख पढ़ें.
  2. डेवलपर और पोर्टल के बीच बातचीत के लिए.

    एपीआई डिप्लॉय करने के लिए, Developer Services पोर्टल का इस्तेमाल किया जाता है. आपके डेवलपर, ऐप्लिकेशन रजिस्टर करने और एपीआई पासकोड पाने के लिए पोर्टल में लॉग इन करते हैं. लॉगिन क्रेडेंशियल और एपीआई कुंजी, मालिकाना हक वाली जानकारी होती है. इसे एचटीटीपीएस पर भेजा जाता है, ताकि यह सुरक्षित रहे. इस तरह की मालिकाना हक वाली जानकारी को एचटीटीपीएस पर भेजा जाना चाहिए.

    इस स्थिति में टीएलएस को कॉन्फ़िगर करने का तरीका इस बात पर निर्भर करता है कि आपने पोर्टल को कैसे डिप्लॉय किया है: क्लाउड या Apigee Edge for Private Cloud. यहां दिए गए सेक्शन में, दोनों स्थितियों के बारे में बताया गया है.

पोर्टल और Edge Management API के बीच TLS कॉन्फ़िगर करना

Edge Management API के कॉन्फ़िगरेशन से यह तय होता है कि कम्यूनिकेशन के लिए टीएलएस का इस्तेमाल किया जा सकता है या नहीं. अगर Edge मैनेजमेंट एपीआई को टीएलएस का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है, तो पोर्टल एचटीटीपीएस का इस्तेमाल कर सकता है. अगर ऐसा नहीं होता है, तो पोर्टल, Edge के साथ एचटीटीपी पर कम्यूनिकेट करता है. इसलिए, पोर्टल डेवलपर के तौर पर, आपको सिर्फ़ यह जानने की ज़रूरत है कि पोर्टल और Edge के बीच कनेक्शन सेट करने के लिए, Edge को कैसे कॉन्फ़िगर किया जाता है.

Edge Management API से कनेक्शन कॉन्फ़िगर करने के लिए, डेवलपर पोर्टल बनाना लेख पढ़ें.

Edge का क्लाउड-आधारित वर्शन

अगर आपका पोर्टल, Edge के क्लाउड वर्शन से कनेक्ट होता है, तो Apigee, Edge Management API के यूआरएल को TLS का इस्तेमाल करने के लिए पहले से कॉन्फ़िगर करता है. पोर्टल को कॉन्फ़िगर करते समय, https://api.enterprise.apigee.com/v1 यूआरएल का इस्तेमाल करके, Edge मैनेजमेंट एपीआई को ऐक्सेस किया जाता है.

Edge को प्राइवेट क्लाउड में इंस्टॉल करना

Edge के Private Cloud वर्शन को इंस्टॉल करने के लिए, Edge Management API का यूआरएल इस फ़ॉर्म में होता है:
http://EdgePrivateCloudIp:8080/v1
या:
https://EdgePrivateCloudIp:TLSport/v1

यहां EdgePrivateCloudIp, Edge Management Server सर्वर का आईपी पता है और TLSport, Edge Management API के लिए टीएलएस पोर्ट है. उदाहरण के लिए, Edge कॉन्फ़िगरेशन के आधार पर पोर्ट नंबर 8443 या 8080 भी हो सकता है.

डेवलपर और पोर्टल के बीच टीएलएस कॉन्फ़िगर करना

डेवलपर और पोर्टल के बीच टीएलएस को कॉन्फ़िगर करने का तरीका, इस बात पर निर्भर करता है कि आपने पोर्टल को कैसे डिप्लॉय किया है: क्लाउड या Apigee Edge for Private Cloud.

क्लाउड-आधारित पोर्टल

Pantheon

Pantheon, अपने प्लैटफ़ॉर्म पर मौजूद सभी साइटों के लिए, Pantheon Global CDN और Let's Encrypt का इस्तेमाल करके, एचटीटीपीएस को अपने-आप चालू होने की सुविधा देता है. इसके लिए, कोई शुल्क नहीं लिया जाता. Pantheon के ग्लोबल सीडीएन पर एचटीटीपीएस भी देखें.

Acquia

Acquia का इस्तेमाल करके टीएलएस/एसएसएल चालू करने के लिए, एसएसएल चालू करना लेख पढ़ें.

Edge for Private Cloud पोर्टल

Apigee, पोर्टल के Private Cloud वर्शन को इंस्टॉल करने का सुझाव देता है. इसके लिए, यह ज़रूरी है कि पोर्टल, लोड बैलेंसर के पीछे हो. जैसा कि यहां दिखाया गया है:

इसलिए, ऑन-प्रिमाइसेस इंस्टॉलेशन के लिए, टीएलएस को कॉन्फ़िगर करने के दो विकल्प उपलब्ध हैं:

  • लोड बैलेंसर पर टीएलएस कॉन्फ़िगर करना: लोड बैलेंसर पर टीएलएस कॉन्फ़िगर करें. इसे पोर्टल पर कॉन्फ़िगर न करें. इसलिए, टीएलएस को कॉन्फ़िगर करने के लिए इस्तेमाल की जाने वाली प्रोसेस, लोड बैलेंसर पर निर्भर करती है. ज़्यादा जानकारी के लिए, अपने लोड बैलेंसर से जुड़ा दस्तावेज़ देखें.
  • पोर्टल पर ही टीएलएस कॉन्फ़िगर करें: अगर ज़रूरी हो, तो पोर्टल को होस्ट करने वाले वेब सर्वर पर टीएलएस कॉन्फ़िगर किया जा सकता है. ज़्यादा जानकारी के लिए, एचटीटीपीएस का इस्तेमाल करने के लिए पोर्टल को कॉन्फ़िगर करना लेख पढ़ें.

पोर्टल को प्रोडक्शन एनवायरमेंट में डिप्लॉय करने से पहले, आपको अपना टीएलएस सर्टिफ़िकेट लेना होगा.

TLS की अन्य सेटिंग कॉन्फ़िगर करना

पोर्टल के लिए टीएलएस के कॉन्फ़िगरेशन में बदलाव करने के लिए, sites/default/settings.local.php (क्लाउड) या sites/default/settings.php (Private Cloud) फ़ाइल में बदलाव किया जा सकता है.

फ़ाइल में बदलाव करते समय, किसी प्रॉपर्टी को सेट करने के लिए ini_set() फ़ंक्शन के इंस्टेंस जोड़ें. इस फ़ंक्शन के बारे में ज़्यादा जानकारी के लिए, यहां जाएं: http://php.net/manual/en/function.ini-set.php.

sites/default/settings.local.php (क्लाउड) या sites/default/settings.php (Private Cloud) फ़ाइल में, ये प्रॉपर्टी सेट की जा सकती हैं:

  • cookie_httponly: (सुझाया गया) इससे यह तय होता है कि कुकी को सिर्फ़ एचटीटीपी प्रोटोकॉल पर ऐक्सेस किया जा सकता है. इस प्रॉपर्टी को इस तरह सेट करें:

    ini_set('session.cookie_httponly', true);
  • session.cookie_secure - (ज़रूरी नहीं) इससे पता चलता है कि कुकी सिर्फ़ सुरक्षित कनेक्शन पर भेजी जा सकती हैं. हालांकि, इसका मतलब यह है कि सभी कॉन्टेंट को एचटीटीपीएस पर दिखाना ज़रूरी है. इस सेटिंग के चालू होने पर, साइट एचटीटीपी पर काम नहीं करेगी. इस प्रॉपर्टी को इस तरह सेट करें:

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

डेवलपर पोर्टल और क्लाइंट के बीच टीएलएस सेट अप करने के बारे में ज़्यादा जानने के लिए, Pantheon की दस्तावेज़ साइट पर सुरक्षित एचटीटीपीएस कम्यूनिकेशन के लिए एसएसएल चालू करें लेख पढ़ें.

लोड बैलेंसर के साथ टीएलएस को कॉन्फ़िगर करना

बेहतर परफ़ॉर्मेंस के लिए, लोड बैलेंसर को कभी-कभी टीएलएस टर्मिनेशन करने के लिए कॉन्फ़िगर किया जाता है. टीएलएस टर्मिनेशन की मदद से, लोड बैलेंसर https:// पर भेजे गए मैसेज को डिक्रिप्ट करते हैं. इसके बाद, वे मैसेज को http:// पर बैकएंड सर्वर को फ़ॉरवर्ड करते हैं. इससे बैकएंड सर्वर को, https:// मैसेज को खुद डिक्रिप्ट करने की ज़रूरत नहीं पड़ती.

अगर लोड बैलेंसर, एन्क्रिप्ट (सुरक्षित) नहीं किए गए एचटीटीपी मैसेज को एक ही डेटा सेंटर में मौजूद सर्वर पर फ़ॉरवर्ड करते हैं, तो सुरक्षा से जुड़ी कोई समस्या नहीं होती. हालांकि, अगर लोड बैलेंसर, डेटा सेंटर से बाहर के सर्वर पर http:// के ज़रिए मैसेज फ़ॉरवर्ड करते हैं, तो मैसेज एन्क्रिप्ट (सुरक्षित) नहीं किए जाते. इससे सुरक्षा में कमी आ सकती है. जैसे, Apigee डेवलपर पोर्टल.

अगर आपका डेवलपर पोर्टल, टीएलएस टर्मिनेशन का इस्तेमाल करने वाले लोड बैलेंसर के पीछे है और आपको https:// पर सभी ट्रैफ़िक को भेजना है, तो वेबसाइट के पेजों में सिर्फ़ https:// लिंक होने चाहिए. साथ ही, आपको डेवलपर पोर्टल की sites/default/settings.local.php (क्लाउड) या sites/default/settings.php (प्राइवेट क्लाउड) फ़ाइल में यह कोड जोड़ना होगा. लोड बैलेंसर, एचटीएमएल पेजों के कॉन्टेंट को अपने-आप नहीं बदलता है. इसलिए, कोड यह पक्का करता है कि क्लाइंट को भेजे गए सभी लिंक https:// से शुरू हों.

लोड बैलेंसर के साथ टीएलएस को कॉन्फ़िगर करने के लिए, sites/default/settings.local.php (Cloud) या sites/default/settings.php (Private Cloud) फ़ाइल में ये लाइनें जोड़ें:

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

ज़्यादा जानकारी के लिए, देखें:

पोर्टल के ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट करना

अपने sites/default/settings.local.php (क्लाउड) या sites/default/settings.php (प्राइवेट क्लाउड) फ़ाइल को अपडेट करके, सभी पोर्टल ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट किया जा सकता है. ज़रूरी अपडेट इस बात पर निर्भर करते हैं कि आपको एक ही होस्टनेम या कई होस्टनेम पर एचटीटीपीएस पर रीडायरेक्ट करना है.

उसी होस्टनेम पर एचटीटीपीएस पर रीडायरेक्ट करना

सभी पोर्टल ट्रैफ़िक को एक ही होस्टनेम (उदाहरण के लिए, *.devportal.apigee.io) पर एचटीटीपीएस पर रीडायरेक्ट करने के लिए, इस कोड को अपनी sites/default/settings.local.php (क्लाउड) या sites/default/settings.php (प्राइवेट क्लाउड) फ़ाइल में जोड़ें.

इस स्थिति में, अगर कोई डेवलपर 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;
  }
}

कई होस्टनेम पर एचटीटीपीएस पर रीडायरेक्ट करना

कई होस्टनेम पर सभी पोर्टल ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट करने के लिए, अपनी sites/default/settings.local.php फ़ाइल (क्लाउड) या sites/default/settings.php फ़ाइल (Private Cloud) में यह कोड जोड़ें.

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