Ich möchte, dass mein Webserver über eine SSL-Verbindung mit dem MySQL-Datenbankserver spricht. Auf dem Webserver läuft CentOS5, auf dem Datenbankserver läuft FreeBSD. Die Zertifikate werden von einer zwischengeschalteten CA DigiCert bereitgestellt.
MySQL sollte SSL verwenden, entsprechend 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
Wenn ich MySQL starte, startet der Daemon ohne Fehler. Dies deutet darauf hin, dass alle Zertifikatdateien lesbar sind.
Wenn ich jedoch versuche, eine Verbindung vom Webserver zum Datenbankserver herzustellen, erhalte ich eine Fehlermeldung:
[root@webserver ~]# mysql -h mysql.example.org -u user -p
ERROR 2026 (HY000): SSL connection error
Und wenn ich versuche, mit openssl weiter zu debuggen:
[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:
Ist dies eine gültige Methode zum Testen der SSL-Verbindung zu einem MySQL-Datenbankserver? Die SSL23_GET_SERVER_HELLO:unknown protocolMeldung ist seltsam, da dies normalerweise der Fall ist, wenn Sie SSL an einem für Nicht-SSL-Datenverkehr bestimmten Port sprechen.
Dieser Befehl openssl funktioniert anscheinend auch mit LDAP- und HTTP-Servern:
$ 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