MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Node.js . में स्व-हस्ताक्षरित प्रमाणपत्रों के साथ MongoDB SSL

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

नए क्लस्टर के लिए नोड बनाते समय स्केलग्रिड वर्तमान में एसएसएल के लिए स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करता है। चूंकि MongoDB Node.js ड्राइवर या Mongoose पर Node.js एप्लिकेशन हमारे प्लेटफ़ॉर्म पर बहुत लोकप्रिय विकल्प हैं, इसलिए हमने स्व-हस्ताक्षरित MongoDB SSL का उपयोग करने में सबसे आम समस्याओं के लिए चरण-दर-चरण समाधान योजना साझा करने के लिए यह पोस्ट बनाई है। Node.js में प्रमाणपत्र। यह चर्चा MongoDB Node.js संस्करण 2.0 और Mongoose संस्करण 4.0.3 से संबंधित है।

स्केलग्रिड में, हम आपको अपने स्वयं के एसएसएल प्रमाणपत्र खरीदने और उन्हें मोंगोडीबी सर्वर पर कॉन्फ़िगर करने का विकल्प भी प्रदान करते हैं। इस अवसर के बारे में अधिक जानने के लिए कृपया [email protected] ईमेल करें।

CA प्रमाणपत्र फ़ाइल जोड़ना

अपने एसएसएल कनेक्शन की सुरक्षा में सुधार करने के लिए, आप मोंगोडीबी सर्वर एसएसएल प्रमाणपत्र को मान्य करने के लिए उपयोग किए जाने वाले सीए को निर्दिष्ट कर सकते हैं। Node.js के पास जाने-माने "रूट" CA की एक डिफ़ॉल्ट सूची है, यदि कनेक्शन निर्माण समय के दौरान CA निर्दिष्ट नहीं है, तो यह सलाह देता है। हालाँकि, चूंकि हम स्व-हस्ताक्षरित प्रमाणपत्रों के बारे में बात कर रहे हैं, इसलिए हमें सत्यापन के लिए CA प्रमाणपत्र फ़ाइल निर्दिष्ट करनी होगी। आप सीए प्रमाणपत्र फ़ाइल की प्रतिलिपि बना सकते हैं जिसका उपयोग क्लाइंट मशीन में स्व-हस्ताक्षर करने के लिए किया गया था (स्केलग्रिड के लिए, यह हमारे पुराने एसएसएल पोस्ट में वर्णित है), और फिर sslCA का उपयोग करें। इस फ़ाइल के पथ को इंगित करने का विकल्प, इस प्रकार सर्वर सत्यापन को भी सक्षम करता है।

नेवला

  • स्टैंडअलोन क्लस्टर के लिए:

    var fs = require('fs');
    var mongoose = require('mongoose');
    var certFileBuf = fs.readFileSync(<path to CA cert file>);
    var mongoUrl = 'mongodb://admin:[email protected]:27017/admin?ssl=true';
    var options = {
      server: { sslCA: certFileBuf }
    };
    mongoose.connect(mongoUrl, options);
    ...
    
  • प्रतिकृति सेट समूहों के लिए:

    var fs = require('fs');
    var mongoose = require('mongoose');
    var certFileBuf = fs.readFileSync(<path to CA cert file>);
    var mongoUrl = 'mongodb://admin:[email protected]:27017,test1.servers.example.com.com:27017/admin?replicaSet=RS-rstestNode-0&ssl=true';
    var options = {
      replset: { sslCA: certFileBuf }
    }
    mongoose.connect(mongoUrl, options);
    ...

MongoDB नेटिव ड्राइवर (और इसके चारों ओर रैपर, जैसे Mongoskin)

  • स्टैंडअलोन क्लस्टर के लिए:

    var certFileBuf = fs.readFileSync(<path to CA cert file>);
    var mongoUrl = 'mongodb://admin:[email protected]:27017/admin?ssl=true';
    var options = {
      server: { sslCA: certFileBuf}
    };
    var MongoClient = require('mongodb').MongoClient
      , assert = require('assert');
    
    MongoClient.connect(mongoUrl, options, function(err, db) {
       assert.equal(null, err);
       console.log("Connected correctly to server");
       db.close();
     });
    
    
  • प्रतिकृति सेट समूहों के लिए:

    प्रतिकृति सेट के लिए विकल्प पैरामीटर है replSet :

    var options = {
      replSet: {
        sslCA: certFileBuf
      }
    };
    var MongoClient = require('mongodb').MongoClient
      , assert = require('assert');
    
    MongoClient.connect(mongoUrl, options, function(err, db) {
       assert.equal(null, err);
       console.log("Connected correctly to server");
       db.close();
     });
    
    

SSL प्रमाणपत्र सत्यापन अक्षम करना

आप SSL प्रमाणपत्र सत्यापन को पूरी तरह अक्षम भी कर सकते हैं। यह करना शायद सबसे आसान है और आपके लिए काम करने के लिए सबसे निश्चित है, हालांकि, यह जाने का अनुशंसित तरीका नहीं है। MongoDB ड्राइवर सर्वर-स्तरीय और प्रतिकृति सेट-स्तरीय SSL विकल्प प्रदान करता है (sslValidate , sslCA , sslCert , sslKey , sslPass ) एसएसएल कनेक्शन को कॉन्फ़िगर करने के लिए। दस्तावेज़ीकरण में सभी विकल्पों का विस्तार से वर्णन किया गया है।

स्व-हस्ताक्षरित प्रमाणपत्रों के मामले में, सबसे उपयोगी विकल्प है sslValidate . इसे false पर सेट किया जा सकता है त्रुटियों के मामले में: DEPTH_ZERO_SELF_SIGNED_CERT (स्व-हस्ताक्षरित प्रमाण पत्र)। यह SSL प्रमाणपत्र सत्यापन को अक्षम कर देता है लेकिन कनेक्शन अभी भी एन्क्रिप्टेड रहता है।

नेवला आपको इसके कनेक्ट कॉल में ड्राइवर को पैरामीटर पास करने देता है। उदाहरण के लिए:

  • प्रतिकृति सेट क्लस्टर:

    sslValidate false . पर सेट करने की आवश्यकता है रेप्लिकासेट विकल्प पर:

    var mongoose = require('mongoose');
    var mongoUrl = 'mongodb://admin:[email protected]:27017,test1.servers.example.com.com:27017/admin?replicaSet=RS-rstestNode-0&ssl=true';
    var options = {
      replset: {sslValidate: false}
    }
    mongoose.connect(mongoUrl, options);
    ...
    
  • MongoDB नेटिव ड्राइवर के लिए:

    var options = {
    replSet: {
        sslValidate: false
      }
    };
    var MongoClient = require('mongodb').MongoClient
      , assert = require('assert');
    
    MongoClient.connect(mongoUrl, options, function(err, db) {
       assert.equal(null, err);
       console.log("Connected correctly to server");
       db.close();
     });
    
    

होस्टनाम सत्यापन अक्षम करना

SSL सत्यापन को पूरी तरह से अक्षम करने के बजाय, यदि होस्टनाम एक समस्या है, तो कोई केवल होस्टनाम सत्यापन को अक्षम कर सकता है।

होस्टनाम सत्यापन, CA प्रमाणपत्र सत्यापन के एक भाग के रूप में, वर्तमान में कॉन्फ़िगर करने योग्य है। यह हमेशा अनुशंसा की जाती है कि यह सत्यापन चालू किया जाए। हालाँकि, यह सत्यापन विफलताओं का कारण बन सकता है, भले ही होस्टनाम में थोड़ी सी भी बेमेल हो, जैसा कि CA प्रमाणपत्र बनाम क्लाइंट कनेक्ट करने का प्रयास कर रहा है। इस प्रकार, अधिकांश टीएलएस/एसएसएल सर्वर प्रदाता इसे बंद करने का एक तरीका है। उदाहरण के लिए। Java MongoDB ड्राइवर 3.0 sslInvalidHostNameAllowed के माध्यम से होस्टनाम सत्यापन को अक्षम करने का एक तरीका देता है संपत्ति। MongoDB नेटिव ड्राइवर 2.0 और इसके बाद के संस्करण के लिए, एक बूलियन विकल्प पैरामीटर checkServerIdentity (डिफ़ॉल्ट सत्य ) होस्टनाम सत्यापन को अक्षम करने के लिए प्रदान किया जाता है। यह व्यक्तिगत सर्वर और प्रतिकृति सेट दोनों स्तरों पर उपलब्ध है।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी गिनती कमांड

  2. नेवला स्कीमा में नेस्टेड ऑब्जेक्ट

  3. मैं एक नेवला मॉडल में विधियों को कैसे परिभाषित करूं?

  4. फ़ील्ड के प्रकार को कैसे बदलें?

  5. mongoengine - एंबेडेड डॉक्यूमेंटफिल्ड की लिस्टफिल्ड पर क्वेरी