इस ब्लॉग पोस्ट में, हम MySQL होस्टिंग में SSL को कॉन्फ़िगर करने और प्रबंधित करने के कुछ महत्वपूर्ण पहलुओं की समीक्षा करते हैं। इनमें डिफ़ॉल्ट कॉन्फ़िगरेशन, एसएसएल को अक्षम करना, और एसएसएल को एक MySQL सर्वर पर सक्षम और लागू करना शामिल होगा। हमारे अवलोकन MySQL 5.7.21 के सामुदायिक संस्करण पर आधारित हैं।
MySQL में डिफ़ॉल्ट SSL कॉन्फ़िगरेशन
डिफ़ॉल्ट रूप से, MySQL सर्वर हमेशा SSL कॉन्फ़िगरेशन को स्थापित और सक्षम करता है। हालांकि, यह लागू नहीं किया गया है कि क्लाइंट एसएसएल का उपयोग करके कनेक्ट होते हैं। क्लाइंट एसएसएल के साथ या उसके बिना कनेक्ट करना चुन सकते हैं क्योंकि सर्वर दोनों प्रकार के कनेक्शन की अनुमति देता है। आइए देखें कि MySQL सर्वर के इस डिफ़ॉल्ट व्यवहार को कैसे सत्यापित किया जाए।
जब एसएसएल डिफ़ॉल्ट रूप से MySQL सर्वर पर स्थापित और सक्षम होता है, तो हम आमतौर पर निम्नलिखित देखेंगे:
- MySQL डेटा निर्देशिका में *.pem फ़ाइलों की उपस्थिति। ये विभिन्न क्लाइंट और सर्वर प्रमाणपत्र और कुंजियाँ हैं जो यहाँ वर्णित एसएसएल के लिए उपयोग में हैं।
- सर्वर शुरू होने के दौरान mysqld त्रुटि लॉग फ़ाइल में एक नोट होगा, जैसे:
- [नोट] डेटा निर्देशिका में ca.pem, server-cert.pem और server-key.pem मिला। उनका उपयोग करके एसएसएल समर्थन को सक्षम करने का प्रयास कर रहा है।
- 'have_ssl' वेरिएबल का मान हाँ होगा:
mysql> 'have_ssl' जैसे वेरिएबल दिखाएं;
+————+———+
| चर_नाम | मान |
+————+———+
| Have_ssl | हाँ |
+————+———+
MySQL क्लाइंट के संबंध में, डिफ़ॉल्ट रूप से, यह हमेशा सर्वर के साथ एन्क्रिप्टेड नेटवर्क कनेक्शन के लिए जाने का प्रयास करता है, और यदि यह विफल हो जाता है, तो यह अनएन्क्रिप्टेड मोड पर वापस आ जाता है।
तो, कमांड का उपयोग करके MySQL सर्वर से कनेक्ट करके:
mysql -h
हम जांच सकते हैं कि वर्तमान क्लाइंट कनेक्शन एन्क्रिप्ट किया गया है या नहीं, स्थिति कमांड का उपयोग कर रहा है:
mysql> स्थिति
—————
mysql Ver 14.14, Linux (x86_64) के लिए EditLine आवरण का उपयोग करके 5.7.21 वितरित करें
कनेक्शन आईडी: 75
वर्तमान डेटाबेस:
वर्तमान उपयोगकर्ता: [email protected]
SSL: साइफर उपयोग में है DHE-RSA-AES256-SHA
वर्तमान पेजर: stdout
आउटफाइल का उपयोग करना: "
सीमांकक का उपयोग करना: ;
सर्वर संस्करण: 5.7.21-लॉग MySQL कम्युनिटी सर्वर (GPL)
प्रोटोकॉल वर्शन: 10
कनेक्शन: 127.0.0.1 TCP/IP के द्वारा
…………………………..
ऊपर हाइलाइट किया गया SSL फ़ील्ड इंगित करता है कि कनेक्शन एन्क्रिप्ट किया गया है। हालाँकि, हम कमांड का उपयोग करके MySQL क्लाइंट को SSL के बिना कनेक्ट करने के लिए कह सकते हैं:
mysql -h
mysql> स्थिति
—————
कनेक्शन आईडी: 93
वर्तमान डेटाबेस:
वर्तमान उपयोगकर्ता: [email protected]
SSL: उपयोग में नहीं है
वर्तमान पेजर: stdout
आउटफाइल का उपयोग करना: "
सीमांकक का उपयोग करना: ;
सर्वर संस्करण: 5.7.21-लॉग MySQL कम्युनिटी सर्वर (GPL)
प्रोटोकॉल वर्शन: 10
कनेक्शन: 127.0.0.1 TCP/IP के द्वारा
…………………………
हम देख सकते हैं कि सर्वर पर SSL सक्षम होने के बावजूद, हम SSL के बिना उससे कनेक्ट करने में सक्षम हैं।
MySQL ट्यूटोरियल - अपने #MySQL सर्वर पर SSL को कैसे कॉन्फिगर और मैनेज करें ट्वीट करने के लिए क्लिक करें
SSL को MySQL में अक्षम करना
यदि आपकी आवश्यकता 'सक्षम, लेकिन वैकल्पिक मोड' के डिफ़ॉल्ट विकल्प के बजाय MySQL सर्वर पर SSL को पूरी तरह से बंद करने की है, तो हम निम्न कार्य कर सकते हैं:
- MySQL डेटा निर्देशिका में *.pem प्रमाणपत्र और कुंजी फ़ाइलों को हटा दें।
- SSL विकल्प बंद करके MySQL को प्रारंभ करें। यह एक पंक्ति प्रविष्टि जोड़कर किया जा सकता है:
ssl=0 my.cnf फ़ाइल में।
हम देख सकते हैं कि:
- mysqld लॉग में कोई नोट नहीं होगा जैसे :
- [नोट] डेटा निर्देशिका में ca.pem, server-cert.pem और server-key.pem मिला। उनका उपयोग करके एसएसएल समर्थन को सक्षम करने की कोशिश की जा रही है।
- ‘have_ssl’ वेरिएबल का मान अक्षम कर दिया जाएगा:
mysql> 'have_ssl' जैसे वेरिएबल दिखाएं;
+————+———+
| चर_नाम | मान |
+————+———+
| have_ssl | अक्षम |
+————+———+
SSL को MySQL में लागू करना
हमने देखा कि हालांकि SSL MySQL सर्वर पर डिफ़ॉल्ट रूप से सक्षम था, लेकिन इसे लागू नहीं किया गया था और हम अभी भी SSL के बिना कनेक्ट करने में सक्षम थे।
अब, requ_secure_transport सिस्टम वैरिएबल सेट करके, हम यह लागू करने में सक्षम होंगे कि सर्वर केवल SSL कनेक्शन स्वीकार करेगा। इसे कमांड के साथ MySQL सर्वर से कनेक्ट करने का प्रयास करके सत्यापित किया जा सकता है:
mysql -h
और, हम देख सकते हैं कि सर्वर से निम्न त्रुटि संदेश के साथ कनेक्शन अस्वीकार कर दिया जाएगा:
ERROR 3159 (HY000):-require_secure_transport=ON के दौरान असुरक्षित परिवहन का उपयोग करने वाले कनेक्शन निषिद्ध हैं।
प्रतिकृति चैनलों के लिए एसएसएल विचार
डिफ़ॉल्ट रूप से, MySQL प्रतिकृति सेटअप में, दास एन्क्रिप्शन के बिना मास्टर से जुड़ते हैं।
इसलिए प्रतिकृति ट्रैफिक के लिए सुरक्षित तरीके से मास्टर से जुड़ने के लिए, दासों को MASTER_SSL=1; 'इसमें मास्टर बदलें' . के हिस्से के रूप में कमांड जो मास्टर से कनेक्ट करने के लिए पैरामीटर निर्दिष्ट करता है। कृपया ध्यान दें कि यदि आपके मास्टर को आवश्यकता_सिक्योर_ट्रांसपोर्ट का उपयोग करके एसएसएल कनेक्शन को लागू करने के लिए कॉन्फ़िगर किया गया है तो यह विकल्प भी अनिवार्य है।