2016-07-24 7 views
6

पार्स के सर्वरों को बंद करने से पहले माइग्रेट करने के दौरान, मैं डिजिटल महासागर पर एक साधारण मोंगोडीबी इंस्टेंस स्थापित करने की कोशिश कर रहा हूं। (मैं इसका उपयोग एमएलएबी के बजाय कर रहा हूं क्योंकि मेरी ज़रूरतें बहुत सीमित हैं - कुछ एमबी स्टोरेज, प्रति सप्ताह कुछ सौ अनुरोध - और उस एमएलएबी की लागत बहुत अधिक है।)पार्स + मोंगोडब + एसएसएल: "पीयर द्वारा प्रदान किया गया कोई एसएसएल प्रमाणपत्र नहीं"

मुझे मिल गया है चल रहा है, और एसएसएल के साथ कुछ प्रगति की है, this guide को लेट्स एन्क्रिप्ट का उपयोग करके धन्यवाद, लेकिन अब मैं अटक गया हूं। पार्स के माइग्रेशन उपकरण का कहना है, "नहीं पहुंचा जा सकता सर्वर," और अगर मैं इस तरह कमांड लाइन पर कनेक्ट करने का प्रयास:

MongoDB shell version: 3.2.7 
connecting to: mydb.myhost.com:27017/dbname 
2016-07-24T10:31:38.814-0700 E QUERY [thread1] Error: network error while attempting to run command 'isMaster' on host 'mydb.myhost.com:27017' : 
[email protected]/mongo/shell/mongo.js:231:14 
@(connect):1:6 

exception: connect failed 

सर्वर लॉग रिपोर्ट:

mongo --ssl -u editAdmin -p "<password-here>" --host mydb.myhost.com dbname 

मैं इस त्रुटि मिलती है

2016-07-24T13:32:44.357-0400 I NETWORK [initandlisten] connection accepted from 12.345.67.89:33351 #39 (1 connection now open) 
2016-07-24T13:32:44.390-0400 E NETWORK [conn39] no SSL certificate provided by peer; connection rejected 
2016-07-24T13:32:44.390-0400 I NETWORK [conn39] end connection 12.345.67.89:33351 (0 connections now open) 

तो यह सुझाव देगा कि ग्राहक को प्रमाण प्रदान करने की आवश्यकता है, लेकिन (ए) मुझे नहीं पता कि एक कैसे प्रदान किया जाए, और (बी) पार्स इसे एक विकल्प के रूप में प्रदान नहीं करता है इसलिए कुछ रास्ता होना चाहिए नहीं

आपकी मदद के लिए अग्रिम धन्यवाद।

उत्तर

0

आप कमांड एसएसएल विकल्प का उपयोग कर रहे हैं (और मुझे लगता है कि पार्स एक ही कर रहा है) तो आप SSL का उपयोग करके कनेक्ट करने का प्रयास कर रहे हैं। SSL का उपयोग करते समय क्लाइंट को प्रमाण प्रदान करना होगा। https://docs.mongodb.com/manual/tutorial/configure-ssl-clients/ यह लिंक बताता है कि यह कैसे करें और विशेष रूप से आपके मुद्दे का उल्लेख भी करें

+0

"एसएसएल का उपयोग करते समय एक ग्राहक को प्रमाण प्रदान करना होगा" - क्या यह हमेशा सच है? इसे कॉन्फ़िगरेशन पर निर्भर होना चाहिए। एसएसएल को कॉन्फ़िगर करने के लिए mongodb ट्यूटोरियल मोंगोड कहते हैं: "यदि ग्राहक प्रमाण पत्र प्रस्तुत करता है, तो प्रमाण पत्र एक वैध प्रमाणपत्र होना चाहिए। प्रमाणपत्रों को प्रस्तुत नहीं करने वाले सभी कनेक्शन एसएसएल का उपयोग करके एन्क्रिप्ट किए गए हैं। " स्रोत: https://docs.mongodb.com/manual/tutorial/configure-ssl/ – DukeOf1Cat

5

कुंजी त्रुटि संदेश यह है एक:

no SSL certificate provided by peer; connection rejected 

जब आप मोंगोडीबी पर टीएलएस/एसएसएल सक्षम करते हैं, मोंगोडीबी क्लाइंट अब प्रमाणित कर सकते हैं कि मोंगोडीबी सर्वर यह है कि यह मोंगोडीबी के टीएलएस/एसएसएल प्रमाणपत्र (प्रॉपर्टी द्वारा mongod.conf फ़ाइल में निर्दिष्ट) की तुलना करके सार्वजनिक प्रमाणपत्र प्राधिकरण प्रमाणपत्र के मुकाबले मोंगोडीबी क्लाइंट को प्रदान करने का दावा करता है जो कि यह इंगित करता है कि प्रमाणपत्र प्राधिकरण आप भरोसा करते हैं।

कुछ समय तथाकथित लेकिन क्या मैं सिर्फ वर्णन किया गया है एक तरह से टीएलएस, जबकि डिफ़ॉल्ट रूप से, MongoDB दो तरह या आपसी TLS प्रमाणीकरण सक्षम बनाता है। इसके पीछे विचार यह है कि शायद मोंगोडीबी ग्राहकों को किसी भी व्यक्ति (जिस तरह से सार्वजनिक वेबसाइट हो सकता है) से स्वीकार नहीं करना चाहता, लेकिन ग्राहकों को प्रमाणित करना चाहता है।

टीएलएस म्यूचुअल ऑथ में, उपरोक्त वर्णित वही प्रमाणपत्र प्राधिकरण क्लाइंट प्रमाण पत्र जारी करेगा और मोंगोडीबी सर्वर क्लाइंट के प्रमाण पत्र की जांच करेगा ताकि यह सुनिश्चित किया जा सके कि वास्तव में प्रमाणपत्र प्राधिकरण द्वारा इसे जारी किया गया था और यह मान्य है (उदाहरण के लिए हैन ' टी समाप्त हो गया)।

तो यह त्रुटि कह रही है "अरे, मैं अपने ग्राहकों को एक टीएलएस प्रमाणपत्र प्रस्तुत करने की उम्मीद करता हूं, लेकिन आप कुछ भी प्रस्तुत नहीं कर रहे हैं।"

रास्ता तय करने के लिए यह Configure mongod and mongos for TLS/SSL में वर्णित है:

If you want to bypass validation for clients that don’t present certificates, include the allowConnectionsWithoutCertificates run-time option with mongod and mongos. If the client does not present a certificate, no validation occurs. These connections, though not validated, are still encrypted using SSL.

बेशक

, आप के रूप में अच्छी mongod.conf फ़ाइल में निर्दिष्ट कर सकते: https://docs.mongodb.com/manual/reference/configuration-options/#net.ssl.allowConnectionsWithoutCertificates

मेरे पसंदीदा समाधान इस तरह दिखता है:

net: 
    port: 27017 
    bindIp: 172.0.0.1 # Set this to whatever your private IP address is 
    ssl: 
    mode: "requireSSL" 
    PEMKeyFile: "/path/to/tls/private/key" 
    CAFile: "/path/to/ca/public/cert" 
    disabledProtocols: "TLS1_0,TLS1_1" 
    allowConnectionsWithoutCertificates: true # <-- The line to add to your config 
संबंधित मुद्दे