Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

उबंटू में MySQL के लिए एसएसएल/टीएलएस कैसे सक्षम करें

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=mysql

Generating 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 कनेक्शन को सक्षम करने में मदद करेगा।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ऑल्टर टेबल कॉलम

  2. SQL क्वेरी परिणाम को पांडा डेटा संरचना में कैसे परिवर्तित करें?

  3. पूर्ण पाठ खोज इंजन की तुलना - Lucene, Sphinx, Postgresql, MySQL?

  4. SQL क्वेरी:नवीनतम N को छोड़कर तालिका से सभी रिकॉर्ड हटाएं?

  5. MySQL विदेशी कुंजी बाधाएं, कैस्केड हटाएं