Nachdem ich ein selbstsigniertes SSL-Zertifikat erstellt habe, habe ich meinen Remote-MySQL-Server so konfiguriert, dass er diese verwendet (und SSL ist aktiviert).
Ich stelle eine SSH-Verbindung zu meinem Remote-Server her und versuche, über SSL eine Verbindung zu seinem eigenen mysqld herzustellen (MySQL-Server ist 5.5.25).
mysql -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)
Ok, ich erinnere mich, dass ich ein Problem mit der Verbindung zum selben Server über SSL gelesen habe. Also lade ich die Client-Schlüssel auf meine lokale Box herunter und teste von dort ...
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error
Es ist unklar, worauf sich dieser "SSL-Verbindungsfehler" bezieht, aber wenn ich den weglasse -ssl-ca
, kann ich eine Verbindung über SSL herstellen.
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.5.25 MySQL Community Server (GPL)
Ich glaube jedoch, dass dies nur die Verbindung verschlüsselt und nicht die Gültigkeit des Zertifikats überprüft (was bedeutet, dass ich potenziell anfällig für Man-in-Middle-Angriffe wäre).
Die SSL-Zertifikate sind gültig (wenn auch selbst signiert) und enthalten keine Passphrase. Meine Frage ist also, was mache ich falsch? Wie kann ich mit einem selbstsignierten Zertifikat eine SSL-Verbindung herstellen?
MySQL Server Version 5.5.25 und der Server und die Clients sind CentOS 5.
Danke für jeden Rat
Bearbeiten : Beachten Sie, dass der Befehl in allen Fällen aus demselben Verzeichnis ausgegeben wird, in dem sich die SSL-Schlüssel befinden (daher kein absoluter Pfad).
Bearbeiten (als Antwort auf mgorven): Dies ca.cert
ist das Zertifikat der Zertifizierungsstelle, das mysql
mitteilen soll, dass meine Zertifizierungsstelle vertrauenswürdig ist.
Die Konfig von my.cnf
ist
[mysqld]
ssl-ca=/etc/ssl/mysql/ca.cert
ssl-cert=/etc/ssl/mysql/server.cert
ssl-key=/etc/ssl/mysql/server.key
Ich habe auch versucht hinzuzufügen ssl-cipher=DHE-RSA-AES256-SHA
, habe es aber seitdem entfernt, da es nicht geholfen hat.
ca.cert
? Ist es das selbstsignierte Zertifikat des Servers? Verwenden Sie Client-Zertifikate zur Authentifizierung? Bitte geben Sie die SSL-bezogene Konfiguration auf dem Server an.