MySQL 5.1.66 SSL कनेक्शन त्रुटि ERROR 2026 (HY000)


37

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

प्रजनन करने कि प्रक्रिया:

  1. एक ही सीए द्वारा हस्ताक्षरित क्लाइंट और सर्वर दोनों को सेटअप / बनाएं।
  2. क्लाइंट और सर्वर पर my.cnf दोनों फाइलों को सेटअप करें जैसा कि इस धागे में बताया गया है
  3. गुलाम के लिए मास्टर पर ssluser बनाएँ
  4. 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

यदि कोई समाधान सुझा सकता है, तो मैं वास्तव में इसकी सराहना करूंगा!


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
पॉल व्हाइट GoFundMonica कहते

जवाबों:


2

Mysql उपयोगकर्ता के स्वामित्व वाली प्रमाणपत्र फ़ाइलें बनाने का प्रयास करें और दूसरों द्वारा पठनीय नहीं।

आप एक निश्चित सिफर के साथ भी कोशिश कर सकते हैं:

mysql ... --ssl-cipher=AES128-SHA

और परिवर्तन मास्टर के लिए:

CHANGE MASTER TO ... MASTER_SSL_CIPHER='AES128-SHA'


1

संभव समाधान:

कैसे बताएं कि क्या MySQL सर्वर yaSSL या OpenSSL का उपयोग करता है

यह एक उपयुक्त वैश्विक स्थिति मूल्य की कमी के लिए एक समाधान दिखाता है। Rsa_public_keyस्थिति चर के लिए जाँच करने के लिए विचार है :

mysql> show status like '%rsa%';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| Rsa_public_key |       |
+----------------+-------+
1 row in set (0.00 sec)

यदि OpenSSL उपयोग में है, तो वह चर मौजूद होगा; अन्यथा यह हांएसएसएल है।

अन्य संभावना:

MySQL और SSL कनेक्शन एरर 2026 (HY000) (स्टैक ओवरफ्लो) को विफल कर रहा है


1

यदि आपने सब कुछ आज़माया है, लेकिन SSL काम नहीं कर रहा है, और उसी समय आप chroot में mysqld चला रहे हैं, तो त्रुटियों का कारण:

ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)

या

ERROR 2026 (HY000): SSL connection error: protocol version mismatch

ऐसा हो सकता है कि आप चेरोट वातावरण में देव / यादृच्छिक और देव / उरुग्मय उपकरण बनाना भूल गए (और ओपनस् लिब इंट्रॉपी प्राप्त नहीं कर सकता - यह चेरोट के बाद इन उपकरणों को खोलता है )। आप इसे इस तरह से ठीक कर सकते हैं ( /srv/mysqldअपने चुरोट डायर के mysqldसाथ और उपयोगकर्ता के साथ mysqld के तहत चल रहा है):

sudo install -d -o mysqld -g mysqld -m 500 /srv/mysqld/dev
sudo mknod -m 444 /srv/mysqld/dev/random c 1 8
sudo mknod -m 444 /srv/mysqld/dev/urandom c 1 9
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.