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

PyMongo का उपयोग करके स्व-हस्ताक्षरित एसएसएल कनेक्शन

सर्टिफ़िकेट अथॉरिटी के साथ सर्वर/क्लाइंट पेम जेनरेट करने के और भी तरीके हैं यानी file.srl को शामिल किए बिना , लेकिन यह उत्तर प्रश्न पर अनुवर्ती कार्रवाई के लिए है।

उल्लेखनीय है कि अधिकांश मोंगोडीबी v3.0+ वितरण में अब एसएसएल के लिए समर्थन शामिल है, कृपया एसएसएल का समर्थन करने वाला पैकेज चुनना सुनिश्चित करें। नीचे दिए गए उदाहरण का परीक्षण MongoDB v3.2 के साथ Ubuntu Linux 14.04 पर PyMongo v3.2.1 के साथ किया गया है। जहां एक मशीन ने प्रदर्शन उद्देश्यों के लिए सीए, सर्वर और क्लाइंट पेम फाइलें जेनरेट कीं।

आइए उत्पन्न करते हैं ca.pem और privkey.pem . विषय संरचना है /C=<Country Name>/ST=<State>/L=<Locality Name>/O=<Organisation Name>/emailAddress=<email>/CN=<Common Name>

mkdir ~/ssl
cd ~/ssl
openssl req -out ca.pem -new -x509 -days 3650 -subj "/C=AU/ST=NSW/O=Organisation/CN=root/[email protected]"

server .pem उत्पन्न करें फ़ाइल:

hostname  # note down the value
echo "00" > file.srl # two random digits number
openssl genrsa -out server.key 2048
openssl req -key server.key -new -out server.req -subj  "/C=AU/ST=NSW/O=Organisation/CN=server1/CN=<hostname value>/[email protected]"
openssl x509 -req -in server.req -CA ca.pem -CAkey privkey.pem -CAserial file.srl -out server.crt -days 3650
cat server.key server.crt > server.pem
openssl verify -CAfile ca.pem server.pem

हालांकि आप आईपी पते का उपयोग CN . के रूप में कर सकते हैं मूल्य भी, इसकी अनुशंसा नहीं की जाती है। RFC-6125 देखें।

अब हम client.pem उत्पन्न करते हैं फ़ाइल:

openssl genrsa -out client.key 2048
openssl req -key client.key -new -out client.req -subj "/C=AU/ST=NSW/O=Organisation/CN=client1/[email protected]"
openssl x509 -req -in client.req -CA ca.pem -CAkey privkey.pem -CAserial file.srl -out client.crt -days 3650
cat client.key client.crt > client.pem
openssl verify -CAfile ca.pem client.pem

.pem . जनरेट करने के बाद फ़ाइलें, अब आप mongod चला सकते हैं। उदाहरण के लिए:

mongod --sslMode requireSSL --sslPEMKeyFile ~/server.pem --sslCAFile ~/ca.pem

आप मोंगो शेल का उपयोग करके कनेक्शन का परीक्षण कर सकते हैं, उदाहरण के लिए:

mongo --ssl --sslPEMKeyFile ~/client.pem --sslCAFile ~/ca.pem --host <server hostname>

एक बार जब आप सफलतापूर्वक कनेक्ट हो जाते हैं, तो आप PyMongo के साथ प्रयास कर सकते हैं। उदाहरण के लिए:

import ssl 
from pymongo import MongoClient
client = MongoClient(
    '<server hostname>',
    27017,
    ssl=True,
    ssl_certfile='~/client.pem',
    ssl_cert_reqs=ssl.CERT_REQUIRED,
    ssl_ca_certs='~/ca.pem'
 )

वैकल्पिक रूप से, आप mongod . का भी उपयोग कर सकते हैं फ्लैग --sslAllowInvalidHostnames localhost निर्दिष्ट करने के लिए , आदि.

उत्पादन के उपयोग के लिए, आपके MongoDB परिनियोजन को एकल प्रमाणपत्र प्राधिकारी द्वारा उत्पन्न और हस्ताक्षरित मान्य प्रमाणपत्रों का उपयोग करना चाहिए। यदि आप स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग करते हैं, हालांकि संचार चैनल एन्क्रिप्ट किया जाएगा, सर्वर पहचान का कोई सत्यापन नहीं होगा। किसी विश्वसनीय प्रमाणपत्र प्राधिकारी द्वारा हस्ताक्षरित प्रमाणपत्र का उपयोग करने से MongoDB ड्राइवर सर्वर की पहचान सत्यापित कर सकेंगे। सामान्य तौर पर, जब तक नेटवर्क पर भरोसा न हो, स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करने से बचें।

अन्य संबंधित लिंक जो आपको उपयोगी लग सकते हैं:

  • MongoDB:SSL कॉन्फ़िगर करें।
  • MongoDB:सुरक्षा ट्यूटोरियल।
  • MongoDB सुरक्षा चेकलिस्ट।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. परमाणु ऑपरेशन के साथ एक दस्तावेज़ में बूलियन फ़ील्ड को कैसे टॉगल करें?

  2. EC2 सर्वर पर MongoDB http इंटरफ़ेस से दूरस्थ रूप से कनेक्ट करना

  3. क्या मोंगोडब एग्रीगेशन फ्रेमवर्क में फ्लोर फंक्शन है?

  4. रेगेक्स मोंगोडीबी सी # ड्राइवर के साथ फ़िल्टर करें

  5. लिनक्स पर जर्नल फाइलों के लिए एरर मोंगॉड डेड लेकिन सबसिस लॉक और अपर्याप्त खाली जगह क्यों मिल रही है?