UPDATE2
वायरशर्क का उपयोग करके मुझे समस्या स्ट्रिंग का पता चला (मुझे आशा है कि मैंने किया था):
28 | 9.582638 | 192.168.18.128 | 192.168.18.129 | MySQL Response Error 1043
और त्रुटि है ( डॉक्स के अनुसार ):
Error: 1043 SQLSTATE: 08S01 (ER_HANDSHAKE_ERROR)
Message: Bad handshake
यहाँ दो मामलों में वायरशार्क के स्क्रीनशॉट हैं:
विंडोज 8 (सफलता) से कनेक्शन:
CentOS से कनेक्शन (विफल):
क्यों होता है ऐसा?
अद्यतन करें
एक दिलचस्प नोटिस:
मैं सफलतापूर्वक Windows 8 का उपयोग मास्टर DB के साथ जुड़ा हुआ है (192.168.18.1)
के लिए मास्टर पर ssluser सेटिंग को संशोधित करके 192.168.18.1
मेजबान - एक परिवर्तन किया: से REQUIRE SSL
करने के लिए REQUIRE X509
। हालाँकि, यह हमारे मामले में गुलाम-से-मास्टर कनेक्शन के साथ काम नहीं करता है।
मुझे CentOS-6.3 में SSL प्रतिकृति समस्या का सामना करना पड़ा है। मैं क्लाइंट और सर्वर सर्टिफिकेट बनाने के लिए ओपनएसएसएल का उपयोग कर रहा हूं और दोनों क्लाइंट और सर्वर सर्टिफिकेट एक ही सीए द्वारा हस्ताक्षरित हैं।
Server IP: 192.168.18.128
Slave IP: 192.168.18.129
MySQL version 5.1.66 SSL
MySQL मदद पृष्ठों के "सर्टिफिकेट अप एसएसएल सर्टिफिकेट्स एंड कीज़ फॉर माय एसक्यूएल" अनुभाग का उपयोग करके मुझे प्राप्त होने वाले सभी प्रमाणपत्र ।
सर्वर की my.cnf फाइल:
[mysqld]
ssl-key=/etc/mysql/certs/server-key.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-ca=/etc/mysql/certs/ca-cert.pem
ग्राहक की my.cnf फाइल:
[client]
ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-key=/etc/mysql/ssl/client-key.pem
ssl-cert=/etc/mysql/ssl/client-cert.pem
मास्टर I पर SSL के साथ उपयोगकर्ता को इस तरह सेटअप करता है:
CREATE USER 'ssluser'@'192.168.18.129' IDENTIFIED BY 'sslpass';
GRANT REPLICATION SLAVE ON *.* TO 'ssluser'@'192.168.18.129' REQUIRE SSL;
दास को अपडेट करने के लिए मैं निम्नलिखित कमांड (कमांड के अनुसार show master status
) का उपयोग कर रहा हूं :
SLAVE STOP;
CHANGE MASTER TO \
MASTER_HOST='192.168.18.128', \
MASTER_USER='sslreplicant', \
MASTER_PASSWORD='db.sslreplicantprimary', \
MASTER_LOG_FILE='mysql-bin.000026', \
MASTER_LOG_POS=106, \
MASTER_SSL=1, \
MASTER_SSL_CA='/etc/mysql/certs/ca-cert.pem', \
MASTER_SSL_CAPATH='/etc/mysql/certs/', \
MASTER_SSL_CERT='/etc/mysql/certs/client-cert.pem',\
MASTER_SSL_KEY='/etc/mysql/certs/client-key.pem';
SLAVE START;
प्रतिकृति ही ठीक काम करती है:
mysql> SHOW VARIABLES LIKE '%ssl%';
have_openssl = YES
have_ssl = YES
ssl_ca = /etc/mysql/certs/ca-cert.pem
ssl_capath =
ssl_cert = /etc/mysql/certs/server-cert.pem
ssl_cipher =
ssl_key = /etc/mysql/certs/server-key.pem
यह दोनों है - मास्टर पर और दास पर।
लेकिन जब मैं मैन्युअल रूप से स्लेव से मास्टर तक कनेक्शन की जांच करता हूं तो मुझे एक त्रुटि मिलती है।
यहां मेरे द्वारा अब तक चुने गए विकल्प (सभी से समान परिणाम) हैं:
[gahcep@localhost ~]$ mysql -u ssluser -h 192.168.18.128 -p
[gahcep@localhost ~]$ mysql --ssl --ssl-ca=/etc/mysql/certs/ca-cert.pem \
-u ssluser -h 192.168.18.128 -p
[gahcep@localhost ~]$ mysql --ssl-ca=/etc/mysql/certs/ca-cert.pem \
--ssl-cert=/etc/mysql/certs/client-cert.pem \
--ssl-key=/etc/mysql/certs/client-key.pem \
-u ssluser -h 192.168.18.128 -p
Enter password:
ERROR 2026 (HY000): SSL connection error
प्रजनन करने कि प्रक्रिया:
- एक ही सीए द्वारा हस्ताक्षरित क्लाइंट और सर्वर दोनों को सेटअप / बनाएं।
- क्लाइंट और सर्वर पर my.cnf दोनों फाइलों को सेटअप करें जैसा कि इस धागे में बताया गया है
- गुलाम के लिए मास्टर पर ssluser बनाएँ
- mysql -u ssluser -h 192.168.18.128 -p
कृपया ध्यान दें, मैंने वास्तव में सभी प्रमाणपत्रों के लिए अलग-अलग सामान्य नामों का उपयोग किया है : सीए, क्लिन और सर्वर के लिए।
अतिरिक्त जानकारी
सत्यापन के परिणाम:
[gahcep@localhost ~]$ sudo openssl verify -purpose sslclient \
-CAfile /etc/mysql/certs/ca-cert.pem /etc/mysql/certs/client-cert.pem
/etc/mysql/certs/client-cert.pem: OK
[gahcep@localhost ~]$ sudo openssl verify -purpose sslserver \
-CAfile /etc/mysql/certs/ca-cert.pem /etc/mysql/certs/server-cert.pem
/etc/mysql/certs/server-cert.pem: OK
सर्टिफिकेट की जानकारी:
सीए:
[gahcep@localhost ~]$ sudo openssl x509 -noout -subject -issuer -dates \
-serial -hash -fingerprint -in /etc/mysql/certs/ca-cert.pem
subject= /C=RU/L=Vladivostok/O=Default Company Ltd/CN=PriSec
issuer= /C=RU/L=Vladivostok/O=Default Company Ltd/CN=PriSec
notBefore=Jan 4 06:27:46 2013 GMT
notAfter=Nov 13 06:27:46 2022 GMT
serial=B45D177E85F99578
c2c5b88b
SHA1 Fingerprint=5B:07:AA:39:28:24:CE:1A:CF:35:FA:14:36:23:65:8F:84:61:B0:1C
ग्राहक प्रमाणपत्र:
[gahcep@localhost ~]$ sudo openssl x509 -noout -subject -issuer -dates \
-serial -hash -fingerprint -in /etc/mysql/certs/client-cert.pem
subject= /C=RU/L=Vladivostok/O=Default Company Ltd/CN=Secondary
issuer= /C=RU/L=Vladivostok/O=Default Company Ltd/CN=PriSec
notBefore=Jan 4 06:29:07 2013 GMT
notAfter=Nov 13 06:29:07 2022 GMT
serial=01
6df9551f
SHA1 Fingerprint=F5:9F:4A:14:E8:96:26:BC:71:79:43:5E:18:BA:B2:24:BE:76:17:52
सर्वर प्रमाणपत्र:
[gahcep@localhost ~]$ sudo openssl x509 -noout -subject -issuer -dates \
-serial -hash -fingerprint -in /etc/mysql/certs/server-cert.pem
subject= /C=RU/L=Vladivostok/O=Default Company Ltd/CN=Primary
issuer= /C=RU/L=Vladivostok/O=Default Company Ltd/CN=PriSec
notBefore=Jan 4 06:28:25 2013 GMT
notAfter=Nov 13 06:28:25 2022 GMT
serial=01
64626d57
SHA1 Fingerprint=39:9E:7A:9E:60:9A:58:68:81:2F:90:A5:9B:BF:E8:26:C5:9D:3C:AB
निर्देशिकाएँ अनुमतियाँ:
मास्टर पर:
[gahcep@localhost ~]$ ls -la /etc/mysql/certs/
drwx------. 3 mysql mysql 4096 Jan 3 23:49 .
drwx------. 3 mysql mysql 4096 Jan 3 07:34 ..
-rw-rw-r--. 1 gahcep gahcep 1261 Jan 3 22:27 ca-cert.pem
-rw-rw-r--. 1 gahcep gahcep 1675 Jan 3 22:27 ca-key.pem
-rw-rw-r--. 1 gahcep gahcep 1135 Jan 3 22:28 server-cert.pem
-rw-rw-r--. 1 gahcep gahcep 1679 Jan 3 22:28 server-key.pem
-rw-rw-r--. 1 gahcep gahcep 976 Jan 3 22:28 server-req.pem
दास पर:
[gahcep@localhost ~]$ ls -la /etc/mysql/certs/
drwx------. 3 mysql mysql 4096 Jan 3 22:57 .
drwx------. 3 mysql mysql 4096 Jan 3 07:50 ..
-rw-r--r--. 1 root root 1261 Jan 3 22:56 ca-cert.pem
-rw-r--r--. 1 root root 1139 Jan 3 22:57 client-cert.pem
-rw-r--r--. 1 root root 1675 Jan 3 22:57 client-key.pem
यदि कोई समाधान सुझा सकता है, तो मैं वास्तव में इसकी सराहना करूंगा!