Я хочу, щоб мій веб-сервер розмовляв із сервером баз даних MySQL через з'єднання SSL. Веб-сервер запускає 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
І якщо я спробую додатково налагодити програму openssl:
[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:
Це вірний спосіб перевірити підключення SSL до сервера баз даних MySQL? SSL23_GET_SERVER_HELLO:unknown protocol
Повідомлення дивно , так як це зазвичай то , що ви побачите , якщо ви говорили SSL на порт , призначений для не-SSL - трафіку.
Ця ж команда openssl, здається, добре працює з серверами 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