2010-12-01 12 views
6

मैं Django को एक MySQL डेटाबेस से कनेक्ट करने का प्रयास कर रहा हूं जो एक एसएसएल कनेक्शन के माध्यम से सुलभ है। मैं इसे कैसे कॉन्फ़िगर कर सकता हूं?डीजेगो को एक एसएसएल कनेक्शन पर एक MySQL डेटाबेस से कैसे कनेक्ट करें?

मेरा पहला अनुमान डेटाबेस परिभाषा की 'विकल्प' संपत्ति सेट करेगा। हालांकि, मुझे उपयोग करने के लिए संभावित विकल्पों पर जानकारी नहीं मिल रही है। विकल्प 'एसएसएल': '/ map/to/ca-cert.pem' काम नहीं करता है।

mysql -h url.to.host -u lizard -p --ssl-ca=./ca-cert.pem 

संपादित करें:: ठीक है, मैं अजगर-mysqldb प्रलेखन पर देख रहा हूँ ... शायद मैं जवाब पा सकते हैं

निम्न आदेश काम करने के लिए लगता है।

उत्तर

12

Django MySQL के साथ इंटरफेस करने के लिए पाइथन MySQLdb लाइब्रेरी का उपयोग करता है। the MySQLdb connection documentation पर देखकर, ऐसा लगता है कि ssl विकल्प को एक शब्दकोश तर्क की आवश्यकता है। तो यह काम हो सकता है:

CA प्रमाणपत्र ग्राहक प्रमाणपत्र क्लाइंट कुंजी

इन कुंजियों बनाने के लिए निर्देश के लिए Mysql दस्तावेज़ देखें और:

'OPTIONS': {'ssl': {'key': '/map/to/ca-cert.pem'}} 
+0

धन्यवाद। यह 'कुंजी' के बजाय 'ca' के साथ भी काम करता है। जवाब इस पृष्ठ पर था: http://dev.mysql.com/doc/refman/5.5/en/mysql-ssl-set.html –

+2

ऐसा लगता है कि 'ca' सही विकल्प है, 'कुंजी' अपने आप पर है MySQL सामग्री को सत्यापित नहीं करने के कारण हुआ। इसके बारे में यहां और पढ़ें: http://stackoverflow.com/questions/7287088/ca-ssl-parameter-for-python-mysqldb-not-working-but-key-does और यहां: http: //bugs.mysql। com/bug.php? id = 62743 –

6

mysql ग्राहक तीन कुंजी के साथ प्रदान की जानी चाहिए सर्वर सेट अप करना: http://dev.mysql.com/doc/refman/5.5/en/creating-ssl-certs.html

नोट: एक खुली समस्या है जो openssl v1.0.1 का उपयोग करने से संबंधित है MySQL 5.5.x (http) के लिए प्रमाणपत्र बनाने के लिए : //bugs.mysql.com/bug.php आईडी = 64870)

यह Django सेटिंग्स फ़ाइल के लिए एक उदाहरण प्रविष्टि है:?

DATABASES = { 
'default': { 
       'ENGINE': 'django.db.backends.mysql', 
       'NAME': '<DATABASE NAME>',      
       'USER': '<USER NAME>', 
       'PASSWORD': '<PASSWORD>', 
       'HOST': '<HOST>', 
       'PORT': '3306'  
       'OPTIONS': { 
         'ssl': {'ca': '<PATH TO CA CERT>', 
           'cert': '<PATH TO CLIENT CERT>', 
           'key': '<PATH TO CLIENT KEY>' 
           } 
          } 
      } 
} 
+1

मुझे पूरी तरह से यकीन नहीं है कि पहले वाक्य में "होना चाहिए" सही है जब तक कि प्रमाणपत्र + कुंजी ** प्रमाणीकरण ** का उपयोग नहीं किया जा रहा है (केवल नेटवर्क यातायात को एन्क्रिप्ट करने के विपरीत)। – jblaine

0

मैं एक "SSL कनेक्शन त्रुटि हो रही थी: SSL_CTX_set_default_verify_paths में विफल रहा है ') "python manage.py migrate

चलाते समय त्रुटि मैंने django-mysql-ssl पैकेज को स्थापित करने के लिए पाइप का उपयोग किया। यह अभी भी काम नहीं कर रहा था। मुझे "सीए" को "एसएसएल-सीए" में बदलना पड़ा और अब यह काम करता है।

'OPTIONS': { 
        'ssl': {'ssl-ca': '<PATH TO CA CERT>', 

          } 
         } 

मुझे यकीन नहीं है कि यह वास्तव में एन्क्रिप्शन का उपयोग कर रहा है, लेकिन यह अब कोई त्रुटि नहीं फेंकता है। मैं एक एडब्ल्यूएस मारियाडीबी उदाहरण से जुड़ा स्थानीय django ऐप चला रहा हूँ।

संबंधित मुद्दे