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 :

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
Ensuite, j'ai créé un utilisateur ayant la possibilité de se connecter en local ou a distance avec la commande GRANT... REQUIRE SSL

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 :

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;
}
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.

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.