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

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

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

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

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

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

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

पैंथियन

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

अक्विया

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

Private Cloud पोर्टल के लिए Edge

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

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

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

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

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

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

फ़ाइल में बदलाव करते समय, कोई प्रॉपर्टी सेट करने के लिए ini_set() फ़ंक्शन के इंस्टेंस जोड़ें. इस फ़ंक्शन के बारे में ज़्यादा जानकारी के लिए, देखें: ini_set

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

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

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

    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 सेट अप करने के बारे में ज़्यादा जानकारी के लिए, Pantheon दस्तावेज़ साइट पर सुरक्षित एचटीटीपीएस कम्यूनिकेशन के लिए SSL चालू करें देखें.

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

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

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

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

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

सभी पोर्टल ट्रैफ़िक को एक ही होस्टनेम पर एचटीटीपीएस पर रीडायरेक्ट करने के लिए, अपने 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;
  }
}