सबसे पहले, समझने की कोशिश करें कि एसएसएल (एचटीटीपीएस) और एचटीटीपी प्रमाणीकरण कैसे काम करता है।
सामान्य HTTP प्रमाणीकरण विधियां (डाइजेस्ट, बेसिक, और किसी भी प्रकार + कुकी आधारित प्रमाणीकरण योजना जिसे आप HTTP के शीर्ष पर लागू कर सकते हैं) सभी अपने आप से असुरक्षित हैं, क्योंकि वे स्पष्ट पाठ में प्रमाणीकरण जानकारी अधिक या कम भेजते हैं। डेटा POST फ़ील्ड्स या हेडर में है या नहीं, और base64- एन्कोडिंग लागू किया गया है या नहीं, इस संबंध में कोई फर्क नहीं पड़ता, पासवर्ड नेटवर्क ट्रैफ़िक की पहुँच वाले किसी को भी स्पष्ट रूप से दिखाई देता है। इसका मतलब यह है कि एक अविश्वसनीय चैनल पर HTTP प्रमाणीकरण बेकार है: एक हमलावर को अपना पासवर्ड पढ़ने के लिए यह सब लगता है एक छोटा सा नेटवर्क है।
SSL एक अंतर्निहित असुरक्षित चैनल पर एक सुरक्षित संचार चैनल को लागू करता है। यह काम करता है, मोटे तौर पर, निम्नानुसार है:
- सर्वर एक हस्ताक्षरित प्रमाण पत्र भेजता है
- क्लाइंट ज्ञात-अच्छे हस्ताक्षर कुंजी की सूची के खिलाफ प्रमाण पत्र को सत्यापित करता है; प्रमाणपत्र हस्ताक्षरों को जंजीरों में जकड़ा जा सकता है, ताकि प्रत्येक नोड का कहना है "यदि हस्ताक्षर जो मुझे संकेत देता है वह अच्छा है, तो मैं हूं", लेकिन अंततः, श्रृंखला को क्लाइंट पर पूर्वनिर्धारित विश्वसनीय अधिकारियों में से एक को हल करने की आवश्यकता है।
- क्लाइंट एक साझा रहस्य भेजने के लिए सर्वर की सार्वजनिक एन्क्रिप्शन कुंजी का उपयोग करता है
- सर्वर निजी कुंजी का उपयोग कर साझा रहस्य को मिटाता है (क्योंकि केवल वैध सर्वर में निजी कुंजी होती है, अन्य सर्वर साझा किए गए डिक्रिप्ट को डिक्रिप्ट करने में असमर्थ होंगे)
- क्लाइंट साझा अनुरोध का उपयोग करके एन्क्रिप्टेड वास्तविक अनुरोध डेटा भेजता है
- सर्वर डेटा का अनुरोध करता है, फिर एक एन्क्रिप्टेड प्रतिक्रिया भेजता है
- ग्राहक प्रतिक्रिया को डिक्रिप्ट करता है और उपयोगकर्ता के सामने प्रस्तुत करता है।
यहाँ कुछ महत्वपूर्ण बिंदुओं पर ध्यान दें:
- प्रमाण पत्र श्रृंखला ग्राहकों को यह सुनिश्चित करने की अनुमति देती है कि जिस सर्वर से वे बात कर रहे हैं वह वास्तविक है, न कि कोई उनके अनुरोध को रोक रहा है। यही कारण है कि आपको एक वास्तविक एसएसएल प्रमाणपत्र खरीदना चाहिए, और जब आप किसी ऐसी साइट पर हिट करते हैं, जो अमान्य, समाप्त हो चुकी है, या अन्यथा गलत प्रमाणपत्र का उपयोग करती है, तो ब्राउज़र आपको डरावनी चेतावनी क्यों देता है: यदि आप कर रहे हैं तो दुनिया के सभी एन्क्रिप्शन मदद नहीं करते हैं गलत व्यक्ति से बात करना।
- गुप्त का आदान-प्रदान करने के लिए उपयोग किए जाने वाले सार्वजनिक / निजी एन्क्रिप्शन सुनिश्चित करता है कि succesful संचार केवल क्लाइंट और सर्वर की इस विशेष जोड़ी के बीच काम करेगा: सूंघे गए नेटवर्क पैकेट एन्क्रिप्ट किए जाएंगे, और उन्हें डेटा प्राप्त करने के लिए सर्वर की निजी कुंजी की आवश्यकता होगी।
- सिमेट्रिक एन्क्रिप्शन का उपयोग अनुरोध के थोक के लिए किया जाता है, क्योंकि इसमें निजी / सार्वजनिक कुंजी एन्क्रिप्शन की तुलना में बहुत कम प्रदर्शन ओवरहेड होता है। कुंजी (साझा रहस्य) का उपयोग निजी / सार्वजनिक कुंजी एन्क्रिप्शन का उपयोग करते हुए किया जाता है, क्योंकि यह एक सुरक्षित तरीके से ऐसा करने का एकमात्र तरीका है (एक अलग चैनल पर परिवहन को छोड़कर, जैसे कि कूरियर सेवा)।
तो जाहिर है, इसमें कुछ ओवरहेड शामिल है, लेकिन यह उतना बुरा नहीं है जितना आप सोचेंगे - यह अधिकतर उस पैमाने पर है जहां "अधिक हार्डवेयर फेंकना" उचित प्रतिक्रिया है, जब तक कि आप बिल्कुल भारी मात्रा में ट्रैफ़िक की तैयारी न करें ( Google या फेसबुक पर विचार करें)। सामान्य परिस्थितियों में, अर्थात, विशिष्ट वेब अनुप्रयोग उपयोग, SSL ओवरहेड नगण्य है, और परिणामस्वरूप, जैसे ही आपके पास कोई गोपनीय डेटा होता है, संसाधनों सहित SSL पर सब कुछ चलाने के लिए सबसे अच्छा है। एसएसएल भी HTTP ट्रैफिक को सुरक्षित करने का एकमात्र व्यवहार्य तरीका है; अन्य विधियां बस के रूप में मानकीकृत नहीं हैं और इस तरह व्यापक रूप से समर्थित नहीं हैं, और आप बिल्कुल इन चीजों को खुद को लागू नहीं करना चाहते हैं, क्योंकि ईमानदारी से, उन्हें गलत करना बहुत आसान है।
TL; DR: हाँ, एसएसएल + बेसिक ऑथेंटिकेशन एक अच्छा विचार है, हाँ, आपको एक सुरक्षित सर्वर (और एक वैध प्रमाण पत्र ) की आवश्यकता है, हाँ, यह थोड़ा धीमा कर देगा, लेकिन नहीं, यह सही के बारे में चिंता करने वाली बात नहीं है अभी।