Je veux que mon serveur Web parle au serveur de base de données MySQL via une connexion SSL. Le serveur Web exécute CentOS5, le serveur de base de données exécute FreeBSD. Les certificats sont fournis par un CA DigiCert intermédiaire.
MySQL devrait utiliser ssl, selon 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
Lorsque je démarre MySQL, le démon démarre sans erreur. Cela suggère que les fichiers de certificat sont tous lisibles.
Mais lorsque j'essaie de me connecter du serveur Web au serveur de base de données, j'obtiens une erreur:
[root@webserver ~]# mysql -h mysql.example.org -u user -p
ERROR 2026 (HY000): SSL connection error
Et si j'essaye de déboguer plus avant avec 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:
Est-ce un moyen valide de tester la connexion SSL à un serveur de base de données MySQL? Le SSL23_GET_SERVER_HELLO:unknown protocol
message est étrange car c'est généralement ce que vous verriez si vous parliez SSL sur un port destiné au trafic non SSL.
Cette même commande openssl semble fonctionner correctement avec les serveurs LDAP et 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