मैं चाहता हूं कि मेरा वेबसर्वर एक SSL कनेक्शन पर MySQL डेटाबेस सर्वर से बात करे। वेबसर्वर CentOS5 चलाता है, डेटाबेस सर्वर FreeBSD चलाता है। एक मध्यवर्ती CA DigiCert द्वारा प्रमाण पत्र प्रदान किए जाते हैं।
MySQL के अनुसार ssl का उपयोग करना चाहिए my.cnf
:
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
ssl
ssl-capath = /opt/mysql/pki/CA
ssl-cert = /opt/mysql/pki/server-cert.pem
ssl-key = /opt/mysql/pki/server-key.pem
जब मैं MySQL शुरू करता हूं, तो डेमन त्रुटियों के बिना शुरू होता है। इससे पता चलता है कि प्रमाणपत्र की फाइलें सभी पठनीय हैं।
लेकिन जब मैं वेबसर्वर से डेटाबेस सर्वर से कनेक्ट करने का प्रयास करता हूं, मुझे एक त्रुटि मिलती है:
[root@webserver ~]# mysql -h mysql.example.org -u user -p
ERROR 2026 (HY000): SSL connection error
और अगर मैं आगे खुलने के लिए डिबग करने की कोशिश करता हूं:
[root@webserver ~]# openssl s_client -connect mysql.example.org:3306 0>/dev/null
CONNECTED(00000003)
15706:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:588:
क्या यह MySQL डेटाबेस सर्वर के SSL कनेक्शन का परीक्षण करने का एक वैध तरीका है? यह SSL23_GET_SERVER_HELLO:unknown protocol
संदेश अजीब है क्योंकि यह तब होता है जब आप गैर-एसएसएल ट्रैफिक के लिए एक पोर्ट पर एसएसएल बोल रहे होते हैं।
यह वही ओपन कमांड कमांड LDAP और HTTP सर्वर के साथ ठीक काम करता है:
$ openssl s_client -connect ldap.example.org:636 0>/dev/null
CONNECTED(00000003)
depth=2 /C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
...
$ openssl s_client -connect www.example.org:443 0>/dev/null
CONNECTED(00000003)
depth=0 /DC=org/DC=example/OU=Services/CN=www.example.org