SSL के लिए MySQL कॉन्फ़िगर किया गया है, लेकिन SSL अभी भी अस्वीकृत है ..!


9

मैंने निम्न स्क्रिप्ट का उपयोग करके MySQL के लिए SSL कॉन्फ़िगर किया है।

#!/bin/bash
#
mkdir -p /root/abc/ssl_certs
cd /root/abc/ssl_certs
#
echo "--> 1. Create CA cert, private key"
openssl genrsa 2048 > ca-key.pem

echo "--> 2. Create CA cert, certificate"
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem

echo "--> 3. Create Server certificate, key"
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem

echo "--> 4. Create Server certificate, cert"
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
echo ""
echo 
echo ""

echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!"
echo ""
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
echo "6. Create client certificate, cert"
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
exit 0

निम्न फ़ाइलें बनाई गईं:

ca-key.pem             ca-cert.pem
server-req.pem         server-key.pem       server-cert.pem
client-req.pem         client-key.pem       client-cert.pem

तब मैंने सर्वर-सर्टिफिकेट.पेम और क्लाइंट-सर्टिफिकेट को संयुक्त कर दिया। सीएएम (मैं ऐसा करने के लिए एक पोस्ट में पढ़ा ..)

मैंने MySQL में एक ssl उपयोगकर्ता बनाया:

GRANT ALL ON  *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL;

अगला मैंने my.cnf में निम्नलिखित जोड़ा

[mysqld]
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

सर्वर को पुनरारंभ करने के बाद, मैं mysql से जुड़ा लेकिन SSL अभी भी उपयोग में नहीं था :(

mysql -u ssluser -p

SSL:                    Not in use

यहां तक ​​कि has_ssl पैरामीटर अभी भी अक्षम दिखा रहा था .. :(

mysql> show variables like '%ssl%';
+---------------+---------------------------------------------+
| Variable_name | Value                                       |
+---------------+---------------------------------------------+
| have_openssl  | DISABLED                                    |
| have_ssl      | DISABLED                                    |
| ssl_ca        | /root/abc/ssl_certs/ca.pem          |
| ssl_capath    |                                             |
| ssl_cert      | /root/abc/ssl_certs/server-cert.pem |
| ssl_cipher    |                                             |
| ssl_key       | /root/abc/ssl_certs/server-key.pem  |
+---------------+---------------------------------------------+

क्या मैं किसी भी कदम से चूक गया, या क्या गलत ..

विस्तार से मिस्ड चरणों के साथ उत्तर की सराहना की जाएगी ..


OpenSSL के किस संस्करण का आप उपयोग कर रहे हैं? और कृपया MySQL में त्रुटि + चेतावनी लॉगिंग सक्षम करें। यदि आप "निजी कुंजी को पढ़ने में असमर्थ" त्रुटि संदेश देखते हैं, तो आप किसी तरह से इस बग से टकरा सकते हैं । एक पुराने सिस्टम पर नई कुंजियाँ + सेर्ट्स बनाना, हाल ही में MySQL पर उनका उपयोग करने से मेरे लिए समस्या हल हो गई।
gertvdijk

@gertvdijk I ने Opensl-1.0.1c का उपयोग किया है। मैं उल्लेख त्रुटि के लिए लॉग की जाँच कर रहा हूँ।
Sunrays

सबसे पहले। जांचें कि क्या mysql ssl का समर्थन करता है। mysql --ssl --helpइसके अलावा my.cnf में उन संशोधनों को करने के बाद mysql को फिर से शुरू करने के लिए मत भूलना
वैलेंटाइन बजरमी

1
@ val0x00ff हाँ MySQL ssl का समर्थन करता है यदि has_ssl मान अक्षम है।
Sunrays

mysql --ssl -u ssluser -pSSL को क्लाइंट पर मजबूर करने की कोशिश करें। बाद में काम करता है कि कोई भी पहचान सकता है कि REQUIRE SSL क्यों नहीं।
जोहान्स नोव

जवाबों:



3

इसे जाँचने का प्रयास करें:

  • MySQL के चेतावनी आउटपुट लॉगिंग को सक्षम करें , और उन वास्तविक लॉग प्रविष्टियों को पढ़ें।
  • उपयोगकर्ता जो MySQL चलाता है ( mysql?) फ़ाइलों को पढ़ने के लिए फाइलसिस्टम अनुमतियों की जाँच करें। में /rootमुझे नहीं लगता कि यह डिफ़ॉल्ट रूप से है है।
  • क्या Apparmor या SELinux MySQL को सीट्स और कीज़ को पढ़ने से रोक रहा है?
  • आप हाल ही में ओपनएसएसएल बनाम MySQL असंगति के एक बुरा बग से प्रभावित हो सकते हैं। मैं Ubuntu 12.04 पर चाबियाँ उत्पन्न करने में असमर्थ रहा हूं, जिसे MySQL पढ़ सकता है, जबकि जिन्हें मैं डेबियन स्क्वीज पर उत्पन्न करता हूं वह ठीक काम करता है।

2

उबंटू पर, आप जांच सकते हैं कि क्या apparmorब्लॉक आपकी सर्टिफ़िकेट फ़ाइलों तक पहुँच प्राप्त करते हैं, मैनुअल देखें

फिर आपको फ़ाइल अनुमति / स्वामित्व की जांच करनी चाहिए और आवश्यक अधिकार जोड़ना चाहिए /etc/apparmor.d/usr.sbin.mysqld। इस धागे को देखें ।


2

मुझे यह समस्या थी, और इसने .pem फ़ाइलों पर स्वामित्व बदलने में मदद की:

chown mysql.mysql /var/lib/mysql/*.pem  (or in your case /root/abc/ssl_certs/*.pem)

(क्रेग राइट से - /ubuntu/194074/en enable-ssl-in- mqq )


इससे मेरे लिए समस्या हल हो गई।
एंटिसा

0

जैसे फ़ाइल [mysqld]में अनुभाग में "ssl" जोड़ेंmy.cnf

ssl
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

और फिर mysql को पुनरारंभ करें और फिर से जांचें। यह काम करेगा।


0

मेरा मानना ​​है कि यह समस्या इस तथ्य के कारण है कि आपने अपने सीए सर्टिफिकेट, सर्वर की और सर्वर सर्टिफिकेट के लिए सही तरीके से फाइल पथ निर्दिष्ट नहीं किया है। यह निम्न प्रारूप में होना चाहिए ...

ssl-ca=path/to/repo/mysql-directory/path/to/pem/cacert.pem
ssl-cert=path/to/repo/mysql-directory/path/to/pem/server-cert.pem
ssl-key=path/to/repo/mysql-directory/path/to/pem/server-key.pem

यानी आपको अपने mysql इंस्टालेशन फोल्डर के भीतर सीरियल्स और कुंजियों के फुल फील पेट की जरूरत है, न कि किसी रिश्तेदार / रूट / पथ की।

यहाँ मेरी स्थापना से एक उदाहरण है:

mysql> show variables like '%ssl%';
+---------------+----------------------------------------------------------+
| Variable_name | Value                                                    |
+---------------+----------------------------------------------------------+
| have_openssl  | YES                                                      |
| have_ssl      | YES                                                      |
| ssl_ca        | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/ca.pem         |
| ssl_capath    |                                                          |
| ssl_cert      | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-cert.pem|
| ssl_cipher    |                                                          |
| ssl_key       | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-key.pem |
+---------------+----------------------------------------------------------+

अतिरिक्त जानकारी के लिए निम्न लिंक देखें। https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html


उसके मार्ग एक के साथ शुरू होते हैं /, जिसका अर्थ है कि वे पूर्ण पथ हैं, न कि सापेक्ष पथ।/root/यूनिक्स प्रणाली पर रूट उपयोगकर्ता के लिए होम फोल्डर है।
बोबापुल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.