MySQL उपयोगकर्ताओं को SSL/TLS प्रमाणपत्रों का उपयोग करके सुरक्षित रूप से डेटाबेस से कनेक्ट करने की अनुमति देता है। इस लेख में हम MySQL SSL कॉन्फ़िगरेशन को देखेंगे - Ubuntu में MySQL के लिए SSL/TLS कैसे सक्षम करें।
MySQL के लिए SSL/TLS कैसे सक्षम करें
यहाँ MySQL में SSL कनेक्शन सेटअप करने के चरण दिए गए हैं।
1. MySQL इंस्टॉल करें
टर्मिनल खोलें और MySQL इंस्टाल करने के लिए निम्न कमांड चलाएँ।
$ sudo apt-get update $ sudo apt-get install mysql-client
बोनस पढ़ें :MySQL सभी तालिकाओं का संयोजन बदलें
2. एसएसएल स्थिति जांचें
MySQL में रूट के रूप में लॉग इन करें
$ mysql -uroot -p
आपको रूट पासवर्ड के लिए कहा जाएगा। लॉग इन करने के बाद, वर्तमान एसएसएल/टीएलएस स्थिति जानने के लिए निम्न कमांड दर्ज करें
mysql> SHOW VARIABLES LIKE '%ssl%'; +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | | +---------------+----------+
आप पाएंगे कि have_openssl और have_ssl दोनों का मूल्य अक्षम है। इसका मतलब है कि MySQL में SSL सक्षम नहीं है।
बोनस पढ़ें :अनुसरण करने के लिए शीर्ष डेटाबेस ब्लॉग
3. SSL/TLS प्रमाणपत्र जेनरेट करें
इसके बाद, हमें SSL/TLS प्रमाणपत्र जेनरेट करने और MySQL सर्वर को उनके स्थानों पर इंगित करने की आवश्यकता है। आमतौर पर, लोग एसएसएल प्रमाणपत्र बनाने के लिए ओपनएसएल का उपयोग करते हैं और फिर उन्हें /var/lib/mysql पर ले जाते हैं जो कि MySQL सर्वर के लिए एसएसएल फाइलों का डिफ़ॉल्ट स्थान है।
हालाँकि, MySQL 5.7 और बाद के संस्करण पहले से ही इस प्रक्रिया को सरल बनाने के लिए एक उपयोगिता mysql_ssl_rsa_setup के साथ शिप करते हैं। यह SSL प्रमाणपत्र बनाता है और उन्हें /var/lib/mysql पर संग्रहीत करता है।
चूंकि हमें इन फ़ाइलों को पढ़ने में सक्षम होने के लिए mysql प्रक्रिया की आवश्यकता है, इसलिए हम mysql . बनाएंगे इन फ़ाइलों के स्वामी के रूप में, जैसा कि नीचे दिखाया गया है।
SSL प्रमाणपत्र जेनरेट करने के लिए निम्न कमांड चलाएँ
$ sudo mysql_ssl_rsa_setup --uid=mysqlGenerating a 2048 bit RSA private key ...................................+++ .....+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key ......+++ .................................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key ......................................................+++ .................................................................................+++
writing new private key to 'client-key.pem'
-----
आप निम्न कमांड चलाकर जेनरेट की गई फाइलों की जांच कर सकते हैं
$ ls -all /var/lib/mysql/*.pem
आपको निम्न जैसा कुछ दिखाई देगा
256740 4 -rw-r--r-- 1 mysql mysql 1078 May 1 12:24 /var/lib/mysql/server-cert.pem 256735 4 -rw------- 1 mysql mysql 1675 May 1 12:24 /var/lib/mysqlsql/ca-key.pem 256739 4 -rw-r--r-- 1 mysql mysql 451 May 1 12:24 /var/lib/mysqlsql/public_key.pem 256741 4 -rw------- 1 mysql mysql 1689 May 1 12:24 /var/lib/mysqlsql/client-key.pem 256737 4 -rw-r--r-- 1 mysql mysql 1064 May 1 12:24 /var/lib/mysqlsql/ca.pem 256743 4 -rw-r--r-- 1 mysql mysql 1048 May 1 12:24 /var/lib/mysqlsql/client-cert.pem 256736 4 -rw------- 1 mysql mysql 1625 May 1 12:24 /var/lib/mysqlsql/private_key.pem 256738 4 -rw------- 1 mysql mysql 1615 May 1 12:24 /var/lib/mysqlsql/server-key.pem
ये SSL प्रमाणपत्र फ़ाइल और प्रमाणपत्र प्राधिकरण, MySQL सर्वर और MySQL क्लाइंट के लिए निजी कुंजी जोड़े हैं।
बोनस पढ़ें :शीर्ष MySQL कार्यक्षेत्र विकल्प
4. MySQL सर्वर में SSL कनेक्शन सक्षम करें
इसके बाद, MySQL में SSL/TLS को सक्षम करने के लिए MySQL सर्वर को पुनरारंभ करें।
$ sudo systemctl restart mysql
MySQL सर्वर स्वचालित रूप से SSL प्रमाणपत्र फ़ाइलों को /var/lib/mysql प्रारंभ होने पर खोजेगा। इसलिए आपको MySQL कॉन्फ़िगरेशन फ़ाइल में उनके स्थान को मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता नहीं है।
बोनस पढ़ें :MySQL क्वेरी कैश को कैसे सक्षम करें
5. एसएसएल कनेक्शन सत्यापित करें
पहले की तरह MySQL में लॉग इन करें (चरण 2) और निम्न कमांड चलाएँ।
SHOW VARIABLES LIKE '%ssl%'; Output +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | ca.pem | | ssl_capath | | | ssl_cert | server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | server-key.pem | +---------------+-----------------+
अब आप पाएंगे have_openssl और have_ssl चर हाँ हैं। आप यह भी देखेंगे कि ssl_ca , ssl_cert और ssl_key उपयुक्त मानों से भरे हुए हैं।
आप अपने कनेक्शन विवरण भी देख सकते हैं।
mysql>\s
--------------
. . .
SSL: Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection: 127.0.0.1 via TCP/IP
. . .
--------------
6. दूरस्थ कनेक्शन के लिए SSL कॉन्फ़िगर करें (वैकल्पिक)
यदि आपके MySQL सर्वर में दूरस्थ इनकमिंग कनेक्शन हैं, तो आप दूरस्थ कनेक्शन के लिए SSL सक्षम कर सकते हैं, और यहां तक कि MySQL सर्वर कॉन्फ़िगरेशन फ़ाइल को संशोधित करके इसे अनिवार्य भी बना सकते हैं।
टर्मिनल खोलें और MySQL कॉन्फ़िगरेशन खोलने के लिए निम्न कमांड चलाएँ।
$ sudo vi /etc/mysql/my.cnf
दो !includedir कथनों के नीचे दिखाए गए अनुसार [mysqld] कोड का ब्लॉक जोड़ें।
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
# Require clients to connect either using SSL
# or through a local socket file
require_secure_transport = ON
bind-address = 0.0.0.0
अंतिम पंक्ति में, हमने दूरस्थ कनेक्शन की अनुमति देने के लिए बाइंड-एड्रेस को 0.0.0.0 पर सेट किया है। यदि आपने पहले ही दूरस्थ कनेक्शन सक्षम कर लिए हैं तो आपको इसे जोड़ने की आवश्यकता नहीं है।
परिवर्तन लागू करने के लिए MySQL सर्वर को पुनरारंभ करें। अब से, MySQL को SSL की आवश्यकता होगी।
दूरस्थ कनेक्शन के लिए, कृपया डिफ़ॉल्ट 3306 के बजाय पोर्ट 443 खोलना न भूलें। ऐसा इसलिए है क्योंकि एसएसएल कनेक्शन पोर्ट 443 पर होते हैं, न कि 3306।
उम्मीद है, यह लेख आपको MySQL में SSL/TLS कनेक्शन को सक्षम करने में मदद करेगा।