Quiero que mi servidor web hable con el servidor de base de datos MySQL a través de una conexión SSL. El servidor web ejecuta CentOS5, el servidor de bases de datos ejecuta FreeBSD. Los certificados son proporcionados por un CA DigiCert intermedio.
MySQL debería estar usando SSL, de acuerdo con 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
Cuando inicio MySQL, el demonio comienza sin errores. Esto sugiere que los archivos de certificado son todos legibles.
Pero cuando intento conectarme desde el servidor web al servidor de la base de datos, aparece un error:
[root@webserver ~]# mysql -h mysql.example.org -u user -p
ERROR 2026 (HY000): SSL connection error
Y si trato de depurar más con 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:
¿Es esta una forma válida de probar la conexión SSL a un servidor de base de datos MySQL? El SSL23_GET_SERVER_HELLO:unknown protocol
mensaje es extraño, ya que esto es lo que normalmente vería si hablara SSL en un puerto destinado a tráfico no SSL.
Este mismo comando openssl parece funcionar bien con los servidores LDAP y 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