अपने सर्वर पर एचटीटीपीएस चालू करना

Chris Palmer
Chris Palmer

इस पेज पर, अपने सर्वर पर एचटीटीपीएस सेट अप करने के बारे में दिशा-निर्देश दिए गए हैं. इसमें यह तरीका भी शामिल है:

  • सार्वजनिक/निजी पासकोड का जोड़ा, 2048-बिट आरएसए में बनाया जा रहा है.
  • सर्टिफ़िकेट हस्ताक्षर अनुरोध (सीएसआर) जनरेट करना, जिसमें आपकी सार्वजनिक कुंजी एम्बेड की गई हो.
  • फ़ाइनल सर्टिफ़िकेट या सर्टिफ़िकेट चेन पाने के लिए, अपने सीएसआर को सर्टिफ़िकेट देने वाली संस्था (सीए) के साथ शेयर करना.
  • अपने फ़ाइनल सर्टिफ़िकेट को /etc/ssl (Linux और Unix) जैसी किसी ऐसी जगह पर इंस्टॉल करें जहां वेब ऐक्सेस नहीं किया जा सकता या जहां भी IIS को इसकी ज़रूरत होती है (Windows के लिए).

कुंजियां और सर्टिफ़िकेट पर हस्ताक्षर के अनुरोध जनरेट करें

इस सेक्शन में Openएसएसएल कमांड-लाइन प्रोग्राम इस्तेमाल किया जाता है. यह Linux, BSD, और Mac OS X सिस्टम के ज़्यादातर वर्शन में उपलब्ध होता है. इसकी मदद से निजी और सार्वजनिक कुंजियां और सीएसआर जनरेट किया जाता है.

सार्वजनिक/निजी कुंजी का जोड़ा जनरेट करें

शुरू करने के लिए, 2,048-बिट आरएसए कुंजी का जोड़ा जनरेट करें. छोटी कुंजी को ऐसे हमलों से तोड़ा जा सकता है जो अनुमान लगाने के लिए बार-बार हमला करते हैं. वहीं दूसरी ओर, बड़ी कुंजियों के लिए ग़ैर-ज़रूरी संसाधनों का इस्तेमाल किया जाता है.

आरएसए कुंजी का जोड़ा जनरेट करने के लिए, इस कमांड का इस्तेमाल करें:

openssl genrsa -out www.example.com.key 2048

इससे नीचे दिया गया आउटपुट मिलता है:

Generating RSA private key, 2048 bit long modulus
.+++
.......................................................................................+++
e is 65537 (0x10001)

सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध जनरेट करें

इस चरण में, अपने सार्वजनिक पासकोड और अपने संगठन की जानकारी को सर्टिफ़िकेट पर हस्ताक्षर करने के अनुरोध या सीएसआर में एम्बेड किया जाता है. openssl कमांड आपसे ज़रूरी मेटाडेटा मांगता है.

नीचे दिया गया निर्देश चलाया जा रहा है:

openssl req -new -sha256 -key www.example.com.key -out www.example.com.csr

आउटपुट यहां देता है:

You are about to be asked to enter information that will be incorporated
into your certificate request

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CA
State or Province Name (full name) [Some-State]:California
Locality Name (for example, city) []:Mountain View
Organization Name (for example, company) [Internet Widgits Pty Ltd]:Example, Inc.
Organizational Unit Name (for example, section) []:Webmaster Help Center Example
Team
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:webmaster@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

सीएसआर की वैधता पक्का करने के लिए, इस निर्देश को चलाएं:

openssl req -text -in www.example.com.csr -noout

रिस्पॉन्स ऐसा दिखना चाहिए:

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=CA, ST=California, L=Mountain View, O=Google, Inc.,
OU=Webmaster Help Center Example Team,
CN=www.example.com/emailAddress=webmaster@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ad:fc:58:e0:da:f2:0b:73:51:93:29:a5:d3:9e:
                    f8:f1:14:13:64:cc:e0:bc:be:26:5d:04:e1:58:dc:
                    ...
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         5f:05:f3:71:d5:f7:b7:b6:dc:17:cc:88:03:b8:87:29:f6:87:
         2f:7f:00:49:08:0a:20:41:0b:70:03:04:7d:94:af:69:3d:f4:
         ...

अपना सीएसआर सर्टिफ़िकेट किसी सर्टिफ़िकेट देने वाली संस्था को सबमिट करें

अलग-अलग सर्टिफ़िकेट देने वाली संस्थाओं (सीए) के मुताबिक, आपको अपने सीएसआर अलग-अलग तरीकों से सबमिट करने होंगे. इनमें अपनी वेबसाइट पर फ़ॉर्म का इस्तेमाल करना या ईमेल से सीएसआर भेजना शामिल है. कुछ CA या उनके रीसेलर भी कुछ या पूरी प्रोसेस को ऑटोमेट कर सकते हैं. इसमें कुछ मामलों में, कुंजी का जोड़ा और सीएसआर जनरेट करना भी शामिल है.

अपने सीए को सीएसआर भेजें और अपना फ़ाइनल सर्टिफ़िकेट या सर्टिफ़िकेट चेन पाने के लिए उनके निर्देशों का पालन करें.

अलग-अलग कैलिफ़ोर्निया, आपकी सार्वजनिक कुंजी की गारंटी देने के लिए अलग-अलग शुल्क लेते हैं.

अपनी कुंजी को एक से ज़्यादा डीएनएस नाम से मैप करने के विकल्प भी हैं. इनमें कई अलग-अलग नाम (जैसे, सभी example.com, www.example.com, example.net, और www.example.net) या "वाइल्डकार्ड" *.example.com जैसे नाम शामिल हैं.

अपने सभी फ़्रंट-एंड सर्वर पर उन जगहों पर सर्टिफ़िकेट कॉपी करें जिन्हें वेब से ऐक्सेस नहीं किया जा सकता. जैसे, /etc/ssl (Linux और Unix) या जहां भी IIS (Windows) को इनकी ज़रूरत होती है.

अपने सर्वर पर एचटीटीपीएस चालू करें

अपने वेब पेजों को सुरक्षित रखने के लिए, सर्वर पर एचटीटीपीएस को चालू करना ज़रूरी होता है.

  • Mozilla के सर्वर कॉन्फ़िगरेशन टूल का इस्तेमाल करके, एचटीटीपीएस पर अपने सर्वर को सेट अप करें.
  • Qualys के एसएसएल सर्वर टेस्ट की मदद से अपनी साइट की नियमित तौर पर जांच करें और पक्का करें कि आपको कम से कम A या A+ मिला हो.

इस स्थिति में, आपको ऑपरेशन से जुड़ा एक ज़रूरी फ़ैसला लेना होगा. इनमें से कोई एक चुनें:

  • हर उस होस्टनेम के लिए एक अलग आईपी पता तय करें जिससे आपका वेब सर्वर कॉन्टेंट दिखाता है.
  • नाम के आधार पर वर्चुअल होस्टिंग की सुविधा का इस्तेमाल करें.

अगर आपने हर होस्टनेम के लिए अलग-अलग आईपी पतों का इस्तेमाल किया है, तो सभी क्लाइंट के लिए एचटीटीपी और एचटीटीपीएस, दोनों का इस्तेमाल किया जा सकता है. हालांकि, ज़्यादातर साइट ऑपरेटर, आईपी पतों को सुरक्षित रखने के लिए नाम पर आधारित वर्चुअल होस्टिंग का इस्तेमाल करते हैं. ऐसा इसलिए, क्योंकि सामान्य तौर पर यह सुविधा ज़्यादा आसान होती है.

अगर आपके सर्वर पर एचटीटीपीएस सेवा पहले से उपलब्ध नहीं है, तो इसे अभी चालू करें (एचटीटीपी को एचटीटीपीएस पर रीडायरेक्ट किए बिना. ज़्यादा जानकारी के लिए, एचटीटीपी को एचटीटीपीएस पर रीडायरेक्ट करना देखें). आपने जो सर्टिफ़िकेट खरीदे और इंस्टॉल किए हैं उनका इस्तेमाल करने के लिए, अपने वेब सर्वर को कॉन्फ़िगर करें. आपको Mozilla का कॉन्फ़िगरेशन जनरेटर काम की लग सकता है.

अगर आपके पास कई होस्टनेम या सबडोमेन हैं, तो उनमें से हर एक को सही सर्टिफ़िकेट का इस्तेमाल करना होगा.

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

इंट्रासाइट यूआरएल को रिलेटिव बनाएं

अब जब आपकी साइट को एचटीटीपी और एचटीटीपीएस, दोनों पर दिखाया जा रहा है, तो ज़रूरी है कि चीज़ें प्रोटोकॉल की परवाह किए बिना आसानी से काम करें. इंट्रासाइट लिंक के लिए मिलते-जुलते यूआरएल का इस्तेमाल करना एक अहम चीज़ है.

पक्का करें कि इंट्रासाइट यूआरएल और बाहरी यूआरएल किसी खास प्रोटोकॉल पर निर्भर न हों. रिलेटिव पाथ का इस्तेमाल करें या प्रोटोकॉल को //example.com/something.js जैसा ही छोड़ दें.

एचटीटीपीएस का इस्तेमाल करके, एचटीटीपी रिसॉर्स वाले पेज को दिखाने से समस्याएं हो सकती हैं. जब कोई ब्राउज़र असुरक्षित संसाधनों का इस्तेमाल करके किसी सुरक्षित पेज पर पहुंचता है, तो वह उपयोगकर्ताओं को चेतावनी देता है कि वह पेज पूरी तरह से सुरक्षित नहीं है. साथ ही, कुछ ब्राउज़र ऐसे एचटीटीपी संसाधनों को लोड या एक्ज़ीक्यूट नहीं कर पाते जिनसे पेज में रुकावट आ जाती है. हालांकि, एचटीटीपीएस रिसॉर्स को एचटीटीपी पेज में सुरक्षित तरीके से शामिल किया जा सकता है. इन समस्याओं को ठीक करने के बारे में ज़्यादा जानने के लिए, मिले-जुले कॉन्टेंट से जुड़ी समस्या ठीक करने का तरीका देखें.

अपनी साइट के अन्य पेजों पर एचटीटीपी पर आधारित लिंक फ़ॉलो करने से भी, उपयोगकर्ता अनुभव को एचटीटीपीएस से एचटीटीपी में डाउनग्रेड किया जा सकता है. इसे ठीक करने के लिए, अपने इंट्रासाइट यूआरएल को जितना हो सके उतना मिलता-जुलता बनाएं. ऐसा करके, उन्हें प्रोटोकॉल-रिलेटिव (प्रोटोकॉल न होना, //example.com से शुरू होने वाला) या होस्ट-रिलेटिव (सिर्फ़ पाथ से शुरू करते हुए /jquery.js जैसे) बनाएं.

ऐसा करें
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24">new post on cats!</a></p>
रिलेटिव इंट्रासाइट यूआरएल का इस्तेमाल करें.
ऐसा करें
<h1>Welcome To Example.com</h1>
<script src="//example.com/jquery.js"></script>
<link rel="stylesheet" href="//assets.example.com/style.css"/>
<img src="//img.example.com/logo.png"/>;
<p>A <a href="//example.com/2014/12/24/">new post on cats!</a></p>
इसके अलावा, प्रोटोकॉल-रिलेटिव इंट्रासाइट यूआरएल का इस्तेमाल करें.
ऐसा करें
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24">new post on cats!</a></p>
<p>Check out this <a href="https://foo.com/"><b>other cool site.</b></a></p>
जहां हो सके वहां दूसरी साइटों के लिंक देने के लिए, एचटीटीपीएस यूआरएल का इस्तेमाल करें.

गलतियों से बचने के लिए, मैन्युअल तरीके से नहीं, बल्कि स्क्रिप्ट का इस्तेमाल करके लिंक अपडेट करें. अगर आपकी साइट का कॉन्टेंट किसी डेटाबेस में है, तो डेटाबेस की डेवलपमेंट कॉपी पर अपनी स्क्रिप्ट की जांच करें. अगर आपकी साइट के कॉन्टेंट में सिर्फ़ सामान्य फ़ाइलें हैं, तो फ़ाइलों की डेवलपमेंट कॉपी पर अपनी स्क्रिप्ट की जांच करें. बदलावों को प्रोडक्शन में तब ही पुश करें, जब बदलाव QA में पास हो जाएं. अपनी साइट में मिले-जुले कॉन्टेंट का पता लगाने के लिए, ब्रैम वैन डैम की स्क्रिप्ट या इससे मिलती-जुलती किसी चीज़ का इस्तेमाल किया जा सकता है.

दूसरी साइटों से लिंक करते समय (उनसे संसाधन शामिल करने के उलट), प्रोटोकॉल को न बदलें. आपके पास उन साइटों के काम करने के तरीके पर कंट्रोल नहीं होता.

बड़ी साइटों के माइग्रेशन को आसान बनाने के लिए, हमारा सुझाव है कि आप प्रोटोकॉल-रिलेटिव यूआरएल का इस्तेमाल करें. अगर आपको पक्के तौर पर नहीं पता कि एचटीटीपीएस को पूरी तरह से डिप्लॉय किया जा सकता है या नहीं, तो अपनी साइट को सभी सबरिसॉर्स के लिए एचटीटीपीएस इस्तेमाल करने के लिए मज़बूर करने पर बैकफ़ायर हो सकता है. ऐसा हो सकता है कि कुछ समय तक एचटीटीपीएस आपके लिए नया और अलग दिखे. साथ ही, एचटीटीपी साइट भी हमेशा की तरह काम करती रहेगी. समय के साथ, माइग्रेशन और एचटीटीपीएस में लॉक करने की प्रोसेस पूरी हो जाएगी (अगले दो सेक्शन देखें).

अगर आपकी साइट किसी तीसरे पक्ष, जैसे कि CDN या jquery.com जैसे किसी तीसरे पक्ष की स्क्रिप्ट, इमेज या अन्य रिसॉर्स पर निर्भर है, तो आपके पास दो विकल्प हैं:

  • इन रिसॉर्स के लिए, प्रोटोकॉल-रिलेटिव यूआरएल का इस्तेमाल करें. अगर तीसरा पक्ष एचटीटीपीएस नहीं दिखाता है, तो उनसे ऐसा करने के लिए कहें. jquery.com के साथ-साथ ज़्यादातर काम पहले से ही करते हैं.
  • ऐसे सर्वर से संसाधन उपलब्ध कराएं जिसका कंट्रोल आपके पास हो. यह सर्वर एचटीटीपी और एचटीटीपीएस, दोनों की सुविधा देता है. हालांकि, यह अक्सर अच्छा आइडिया है, क्योंकि इससे आपकी साइट के दिखने के तरीके, परफ़ॉर्मेंस, और सुरक्षा को बेहतर तरीके से कंट्रोल किया जा सकता है. साथ ही, अपनी साइट को सुरक्षित रखने के लिए आपको किसी तीसरे पक्ष पर भरोसा करने की ज़रूरत नहीं होती.

एचटीटीपी को एचटीटीपीएस पर रीडायरेक्ट करें

सर्च इंजन को यह बताने के लिए कि आपकी साइट को एचटीटीपीएस का इस्तेमाल करके ऐक्सेस किया जाए, <link rel="canonical" href="https://…"/> टैग का इस्तेमाल करके हर पेज के सबसे ऊपर एक कैननिकल लिंक लगाएं.

स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी और सुरक्षित कुकी चालू करें

इस स्थिति में, आप एचटीटीपीएस के इस्तेमाल को "लॉक इन" करने के लिए तैयार हैं:

  • 301 रीडायरेक्ट की लागत से बचने के लिए, एचटीटीपी स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी (एचएसटीएस) का इस्तेमाल करें.
  • कुकी पर सिक्योर फ़्लैग हमेशा सेट करें.

सबसे पहले, स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी का इस्तेमाल करके, क्लाइंट को बताएं कि उन्हें एचटीटीपीएस का इस्तेमाल करके, हमेशा आपके सर्वर से कनेक्ट होना चाहिए. ऐसा http:// रेफ़रंस को फ़ॉलो करते समय भी किया जा सकता है. इससे एसएसएल स्ट्रिपिंग जैसे हमलों से बचा जा सकता है. साथ ही, 301 redirect की दोतरफ़ा यात्रा की लागत से बचा जा सकता है जिसे हमने एचटीटीपी को एचटीटीपीएस पर रीडायरेक्ट करें में चालू किया था.

एचएसटीएस चालू करने के लिए, Strict-Transport-Security हेडर सेट करें. OWASP के HSTS पेज पर कई तरह के सर्वर सॉफ़्टवेयर के बारे में निर्देशों के लिंक दिए गए हैं.

ज़्यादातर वेब सर्वर, कस्टम हेडर जोड़ने की सुविधा देते हैं.

यह पक्का करना भी ज़रूरी है कि क्लाइंट, एचटीटीपी पर कभी कुकी न भेजें. जैसे, पुष्टि करने या साइट की सेटिंग के लिए. उदाहरण के लिए, अगर किसी उपयोगकर्ता की पुष्टि करने वाली कुकी को सादे टेक्स्ट में दिखाया जाता है, तो उसके पूरे सेशन के लिए आपकी सुरक्षा की गारंटी खत्म कर दी जाएगी, भले ही आपने बाकी सब कुछ ठीक किया हो!

इससे बचने के लिए, अपने वेब ऐप्लिकेशन को इस तरह बदलें कि वह सेट की गई कुकी पर हमेशा सुरक्षित फ़्लैग सेट करे. इस OWASP पेज पर, ऐप्लिकेशन के कई फ़्रेमवर्क में सुरक्षित फ़्लैग सेट करने का तरीका बताया गया है. हर ऐप्लिकेशनल फ़्रेमवर्क में फ़्लैग सेट करने का एक तरीका होता है.

ज़्यादातर वेब सर्वर पर रीडायरेक्ट करने की आसान सुविधा उपलब्ध होती है. सर्च इंजन और ब्राउज़र को यह बताने के लिए 301 (Moved Permanently) का इस्तेमाल करें कि एचटीटीपीएस वर्शन कैननिकल है. साथ ही, अपने उपयोगकर्ताओं को एचटीटीपी से अपनी साइट के एचटीटीपीएस वर्शन पर रीडायरेक्ट करें.

खोज रैंकिंग

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

परफ़ॉर्मेंस

जब कॉन्टेंट और ऐप्लिकेशन लेयर में बदलाव किया जाता है (सलाह पाने के लिए स्टीव सूडर की किताबें देखें), तो TLS की परफ़ॉर्मेंस से जुड़ी बाकी समस्याएं, ऐप्लिकेशन की कुल लागत को लेकर कम होती हैं. आपके पास इन कीमतों को कम करने और इन्हें घटाने या बढ़ाने का विकल्प भी है. TLS को ऑप्टिमाइज़ करने के बारे में सलाह पाने के लिए, इल्या ग्रिगोरिक की हाई परफ़ॉर्मेंस ब्राउज़र नेटवर्किंग और इवान रिस्टिक की Openएसएसएल कुकबुक और बुलेटप्रूफ़ एसएसएल ऐंड TLS की जानकारी देखें.

कुछ मामलों में, TLS की मदद से परफ़ॉर्मेंस को बेहतर बनाया जा सकता है, ऐसा ज़्यादातर HTTP/2 को संभव बनाया जाता है. ज़्यादा जानकारी के लिए, Chrome Dev Summit 2014 में एचटीटीपीएस और एचटीटीपी/2 की परफ़ॉर्मेंस पर की गई क्रिस पामर की बातचीत देखें.

रेफ़रर हेडर

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

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

विज्ञापन से मिलने वाला रेवेन्यू

साइट ऑपरेटर जो विज्ञापन दिखाकर अपनी साइट से कमाई करते हैं वे यह पक्का करना चाहते हैं कि एचटीटीपीएस पर माइग्रेट करने से विज्ञापन इंप्रेशन कम न हों. हालांकि, कॉन्टेंट की मिली-जुली सुरक्षा से जुड़ी समस्याओं की वजह से, एचटीटीपी <iframe> किसी एचटीटीपीएस पेज पर काम नहीं करता. जब तक विज्ञापन देने वाले लोग या कंपनियां एचटीटीपीएस पर कॉन्टेंट पब्लिश नहीं करती, तब तक साइट ऑपरेटर, विज्ञापन से मिलने वाले रेवेन्यू को खोए बिना एचटीटीपीएस पर माइग्रेट नहीं कर सकते. हालांकि, जब तक साइट ऑपरेटर एचटीटीपीएस पर माइग्रेट नहीं होते, तब तक विज्ञापन देने वालों को एचटीटीपीएस पब्लिश करने के लिए कोई मदद नहीं मिल पाएगी.

एचटीटीपीएस पर विज्ञापन सेवाएं देने वाले लोगों या कंपनियों का इस्तेमाल करके, इस समस्या को खत्म करने की शुरुआत की जा सकती है. साथ ही, उन विज्ञापन देने वालों से अनुरोध किया जा सकता है जो एचटीटीपीएस पर नहीं दिखते. साथ ही, उन्हें कम से कम एक विकल्प देने के लिए कहें. हो सकता है कि आपको IntraSite यूआरएल को मिलते-जुलते यूआरएल बनाने की प्रोसेस को तब तक पूरा न करना पड़े, जब तक कि काफ़ी विज्ञापन देने वाले इंटरऑपरेट नहीं कर लेते.