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

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

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

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

TLS और पोर्टल

नीचे दी गई इमेज में वे दो जगहें दिखाई गई हैं जहां पोर्टल TLS का इस्तेमाल करता है:

  1. पोर्टल और Edge मैनेजमेंट एपीआई के बीच कम्यूनिकेशन के लिए.

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

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

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

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

पोर्टल और Edge मैनेजमेंट एपीआई के बीच TLS को कॉन्फ़िगर करना

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

Edge मैनेजमेंट एपीआई के साथ कनेक्शन को कॉन्फ़िगर करने के लिए इस्तेमाल की जाने वाली प्रोसेस के लिए, डेवलपर पोर्टल बनाना लेख देखें.

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

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

Edge का निजी क्लाउड इंस्टॉल करना

Edge के निजी क्लाउड इंस्टॉलेशन के लिए, Edge मैनेजमेंट एपीआई का यूआरएल इस फ़ॉर्म में होगा:
http://EdgePrivateCloudIp:8080/v1
या:
https://EdgePrivateCloudIp:TLSport/v1

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

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

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

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

पैंथियन

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

अक्विया

Acquia का इस्तेमाल करके TLS/एसएसएल को चालू करने के लिए, एसएसएल चालू करना देखें.

निजी क्लाउड पोर्टल के लिए Edge

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

इसलिए, कंपनी की इमारत से जुड़े इंस्टॉलेशन के लिए, आपके पास TLS को कॉन्फ़िगर करने के दो विकल्प हैं:

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

प्रोडक्शन एनवायरमेंट में पोर्टल डिप्लॉय करने से पहले, आपको अपना 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: (सुझाया गया) यह बताता है कि कुकी को सिर्फ़ एचटीटीपी प्रोटोकॉल से ऐक्सेस किया जा सकता है. इस प्रॉपर्टी को इस तौर पर सेट करें:

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

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

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

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

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

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

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

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

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

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

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

इस स्थिति में, अगर कोई डेवलपर live-example.devportal.apigee.io पर जाता है, लेकिन उसे live-example.devportal.apigee.io के लिए अपलोड किए गए सर्टिफ़िकेट को ऐक्सेस करना है, तो अनुरोध रद्द हो जाएगा.

// 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 फ़ाइल (प्राइवेट क्लाउड) में नीचे दिए गए कोड को जोड़ें.

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