नोडज में https कुकी सेट करना

Aug 23 2020

मैं अपनी वेबसाइट पर एक लॉगिन सिस्टम सेटअप करने का प्रयास कर रहा हूं।

सुना है कि नोडज कुकीज एक अच्छा तरीका है।

निम्नलिखित लिंक में:
https://stackoverflow.com/a/21809393/322537
https://nodejs.org/dist/latest-v8.x/docs/api/https.html
मुझे एक उदाहरण मिला है कि कैसे https सर्वर बनाए जाते हैं। यह मेरी समझ है कि createServer फ़ंक्शन को क्लाइंट द्वारा अनुरोध करने पर हर बार चलना चाहिए।

तो मेरे पास मेरे कोड में निम्नलिखित हैं:

var server_https=modules.https.createServer({
    key: this.ssl_key,
    cert:this.ssl_cert
    },this.respond_to_client).listen(this.port);


mconnection.prototype.respond_to_client=function(request,response){
    console.log('responded to client');
    }

वेबसाइट के उठते ही सर्वर ठीक चलता दिखाई देता है। लेकिन respond_to_client समारोह NodeJS की लॉग फ़ाइल के रूप में कभी नहीं चलाने के लिए प्रकट होता है कभी नहीं इंगित करता है स्ट्रिंग 'ग्राहक के लिए प्रतिक्रिया व्यक्त'।

यह कैसे हो सकता है? क्या इसके साथ कुछ ऐसा हो सकता है कि मैं कोड के कुछ ही समय बाद https सर्वर को वेबसैट में अपग्रेड कर रहा हूं?

अद्यतन:
यहाँ सर्वर फ़ाइल है:
https://openage.org/s.js
यहाँ कनेक्शन मॉड्यूल है:
https://openage.org/c.js

और यहाँ चैट प्रोग्राम सर्व कर रहे हैं
https://openage.org/chat/14/?page=index

फिर योजना ग्राहकों को पहचानने और फिर एक लॉगिन सिस्टम सेटअप करने के लिए कुकीज़ बनाने की है। लेकिन मैं इस पर अड़ा हुआ हूं। /:

जवाब

3 factorypolaris Aug 26 2020 at 17:27

मैंने स्थानीय परीक्षण के लिए आपकी नोड लिपियों को दोहराया है। मुझे पहली बार http (बनाम https) पर चलने वाली चीजें मिलीं, और ठीक-ठीक प्रतिक्रिया मिल पाई। हालांकि, https में जाने पर, सर्वर द्वारा अनुरोध को कभी भी पुनः प्राप्त नहीं किया जाता है। वास्तविक अनुरोध भेजे जाने से पहले ब्राउज़र को पहले एक सुरक्षित कनेक्शन स्थापित करना होगा।

जब मैं एक ही पोर्ट पर एक से अधिक सर्वर (https और ws) चलाने का प्रयास कर रहा था, तो मैं एक समान समस्या में भाग गया। आपके पास जो है वह बहुत करीब है, हालांकि https.createServer ({विकल्प}, हैंडलर) के लिए आपका सेटअप, समायोजन की आवश्यकता है।

आपके पास कहाँ है:

var server_https= https.createServer({
        key: this.ssl_key,
        cert:this.ssl_cert
},respond_to_client).listen(this.port);

आपको "ca" के लिए एक विकल्प भी जोड़ना होगा:

var server_https= https.createServer({
        key: this.ssl_key,
        cert: this.ssl_cert,
        ca: this.ssl_ca,  // also add this
},respond_to_client).listen(this.port);

"सीए" के लिए मैंने जो मूल्य का उपयोग किया है वह फ़ाइल की सामग्री है: मध्यवर्ती हस्ताक्षर। प्रमाणपत्र हस्ताक्षर प्राधिकारी से प्राप्त।


जरूरी

हालांकि स्व-हस्ताक्षरित प्रमाण पत्र का उपयोग करके यह काम करना संभव हो सकता है, मैं कभी ऐसा करने में सक्षम नहीं हुआ क्योंकि कोई हस्ताक्षर प्राधिकारी नहीं है।


तो जैसे आपने अपनी अन्य सर्टिफिकेट फाइलों के लिए किया है, वैसे ही आपको यह इंटरमीडिएट। आर्ट फाइल के लिए भी करना चाहिए।

//Where you read your other cert files: add another.
this.ssl_ca = modules.fs.readFileSync(this.ssl_ca_pathfile);

मुझे यह मुश्किल और खराब दस्तावेज वाला लगा। मैं एसएसएल / टीएसएल का विशेषज्ञ नहीं हूं, हालांकि मध्यवर्ती प्रमाणपत्र पर त्वरित खोज चालू है:

एक मध्यवर्ती प्रमाण पत्र एक अधीनस्थ प्रमाण पत्र है जो विशेष रूप से एंड-यूनिट सर्वर प्रमाणपत्र जारी करने के लिए विश्वसनीय रूट द्वारा जारी किया जाता है। परिणाम एक प्रमाणपत्र श्रृंखला है जो विश्वसनीय रूट CA पर शुरू होती है, मध्यवर्ती के माध्यम से और आपके द्वारा जारी एसएसएल प्रमाणपत्र के साथ समाप्त होती है। ऐसे प्रमाणपत्रों को जंजीर रूट प्रमाणपत्र कहा जाता है। स्रोत

मध्यवर्ती संरचना में निम्नलिखित संरचना होगी:

-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
****
-----END CERTIFICATE-----

यहाँ ब्राउज़र में प्रतिक्रिया है।