Bonjour,
Je travaille sur une application mysql++ et j'aimerais utiliser une connexion sécurisée SSL. Mon problème est que mon programme me renvoie toujours l'erreur ERROR 2026 : SSL connection error
Voila comment je m'y suis pris :
Tout d'abord, il faut préciser que je travaille sur Windows XP et Visual C++ 2005. J'utilise un serveur MySQL 5.0.27 et la librairie mysql++ 2.2.0
J'ai commencé par créer mes certificats avec OpenSSL 0.9.8.d et j'ai configuré mon serveur en modifiant le fichier my.ini :
Ensuite, j'ai créé un utilisateur ayant la possibilité de se connecter en local ou a distance avec la commande GRANT... REQUIRE SSL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 [client] port=3306 ssl-ca = "E:/SSL/cacert.pem" ssl-capath = "E:/SSL/newcerts/" ssl-cert = "E:/SSL/client-cert.pem" ssl-key = "E:/SSL/client-key.pem" ssl-cipher = ALL ... [mysqld] # The TCP/IP Port the MySQL Server will listen on port=3306 ssl-ca = "D:/MySQL/SSL/cacert.pem" ssl-capath = "D:/MySQL/SSL/newcerts/" ssl-cert = "D:/MySQL/SSL/server-cert.pem" ssl-key = "D:/MySQL/SSL/server-key.pem" ssl-cipher = ALL
J'ai essayé de me connecter avec le client MySQL :
mysql -u Fred -ppassword --ssl, jusqu'ici pas de problèmes, ça marche bien
Au cas où, j'ai vérifié les variables SSL du serveur avec la commande SHOW STATUS LIKE "%ssl%"; là encore pas de problème, tout est ok
Enfin, j'ai essayé de me connecter au serveur avec mon programme dont voici la fonction de connection :
Ce code me fait toujours une erreur "SSL connection error", j'ai essayé de donner les chemins relatifs et absolus pour les certificats, j'ai aussi essayé la fonction "set_option()" pour activer l'option opt_secure_auth mais cette fonction me renvoie toujours false, je ne suis pas arrivé à la faire marcher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 bool ConnectDB( Connection &connection, const char * pNameDB, const char * pHost, const char * pUser, const char * pPassword ) { int iPort = 3306; unsigned int iClientFlag = CLIENT_SSL; const char * pKey = "..\\SSL\\client-key.pem"; const char * pCert = "..\\SSL\\client-cert.pem"; const char * pCA = "..\\SSL\\cacert.pem"; const char * pCApath = "..\\SSL\\newcerts\\"; const char * pCipher = "ALL"; //connexion try { connection.enable_ssl( pKey, pCert, pCA, pCApath, pCipher ); connection.connect( pNameDB, pHost, pUser, pPassword, iPort, 0, 60, 0, iClientFlag ); } catch ( ConnectionFailed error ) { cout << "ConnectDB() failed" << endl; cout << "erreur connection :" << error.what() << endl; cout << "num err :" << connection.errnum() << endl; return false; } return true; }
Est ce que quelqu'un pourrait me dire ce qui ne va pas ?!!!
Merci d'avance pour le temps que certains passeront à lire mon post, j'espère avoir respecté les règles, c'est la première fois que je poste sur un forum.
Partager