2011-05-04 6 views
5

Nous avons une application client qui se connecte à notre base de données MySQL en ligne (5.1.44-community-log) via un connecteur ODBC (le serveur est un serveur web dédié *). Cela fonctionne très bien. Cependant, je ne peux pas le faire fonctionner avec SSL. Voilà ce que je l'ai fait jusqu'à présent:Connexion MySQL utilisant ODBC (5.1) avec SSL

1. serveur MySQL

J'ai le gestionnaire de serveur * configuré MySQL avec SSL, cela est 'prouvé par':

mysql> SHOW VARIABLES LIKE '%ssl%'; 

qui en résulte est cette réponse:

+---------------+---------------------------------+ 
| Variable_name | Value       | 
+---------------+---------------------------------+ 
| have_openssl | YES        | 
| have_ssl  | YES        | 
| ssl_ca  | /***/mysql-cert/ca-cert.pem  | 
| ssl_capath |         | 
| ssl_cert  | /***/mysql-cert/server-cert.pem | 
| ssl_cipher |         | 
| ssl_key  | /***/mysql-cert/server-key.pem | 
+---------------+---------------------------------+ 

question: est le serveur configuré à droite? Je devine que c'est ...

2. Certificats

J'ai acheté des certificats réels (via mon gestionnaire de serveur). Ceux-ci sont dans le répertoire ci-dessus. J'ai également téléchargé les fichiers client-cert.pem, client-key.pem et ca-cert.pem à partir de ce répertoire.

3. utilisateur MySQL avec EXIGE [SSL | X509]

J'ai créé un nouvel utilisateur et lui accorder un accès en tout lieu (pour les tests) avec SSL:

GRANT USAGE ON *.* TO 'somevaliduser'@'%' IDENTIFIED BY PASSWORD 'somevalidpass' REQUIRE X509 

4. ODBC client

J'ai (juste téléchargé et) installé: mysql-connector-odbc-5.1.8-winx64.msi (64 bits) que ma machine est un 64 bits Windows 7 machine (ce n'est pas ce qui ne va pas).

Et j'ai créé un DSN utilisateur le configurant comme ceci (aucune option définie sur les onglets), ce qui montre la connexion au serveur (mais ne pas utiliser - ou ne le demande pas - SSL) avec succès qui ne nécessite SSL):

Connection to MySQL server without using SSL

Ainsi, la connexion est en mesure d'établir, maintenant essayer en utilisant SSL.

Ceci est configuré comme ceci, ce que j'ai lu sur MySQL.com. Donc, je ne suis pas sûr à 100% que les options sont bonnes.

Connection to MySQL server using SSL

Comme vous pouvez le voir en résulte une erreur HY000. Activer le suivi (dans la configuration ODBC) affiche également cette erreur.

Quelqu'un peut-il me donner un indice sur la façon de faire ce travail? Même si vous connaissez juste une partie de la solution?

+0

Sur les deux écrans, vous utilisez le même port. Est-ce correct? Que pouvez-vous palmes sur le côté serveur? Y a-t-il des journaux? –

+0

Les deux très bonnes questions! Merci, j'y reviendrai bientôt et rendrai compte. Merci! –

+0

Merci Michal, d'avoir répondu. –

Répondre

4

J'ai résolu le problème.Parce que j'ai essayé plusieurs choses à la fois, je ne sais pas ce que fait l'affaire:

  1. J'ai eu le gestionnaire de serveur recréer les certificats: J'ai acheté mais j'ai trouvé que ceux qui ne pouvaient être utilisé pour crypter SSL la connexion. Donc pour l'instant j'utilise des certificats OpenSSL. Je les ai eu re-créer les certificats avec 4) Créez votre client .... serveur. Ils doivent être uniques. (as mentioned here) à l'esprit.
  2. Je suppose que la case à cocher «Verify SSL Certificate» ne s'applique que lorsque vous achetez un certificat et qu'un service tiers doit vérifier la validité du certificat. Décochez cette case!
  3. Ne remplissez les champs:
    • 'SSL Key' (c: \ path_to \ client-key.pem)
    • 'certificat SSL' (c: \ path_to \ client-cert.pem)
    • 'autorité de certification SSL' (c: \ path_to \ ca-cert.pem)

S'il vous plaît noter:

  1. Le le port est toujours le même (pour moi).
  2. Les journaux - comme l'a proposé Michal Niklas - n'ont montré aucune information utile.
  3. J'ai basculé sur 'Utiliser la compression' qui est censé améliorer les performances.
3

J'utilise Ubuntu 12.04 LTS avec MySQL Ver 5.5.22-0ubuntu1 pour debian-linux-gnu sur x86_64 ((Ubuntu)) et OpenSSL OpenSSL 1.0.1 14 mars 2012

I créé les certificats suivant le tutoriel sur http://www.thomas-krenn.com/de/wiki/MySQL_Verbindungen_mit_SSL_verschl%C3%BCsseln (Le tutoriel est en allemand, mais ce n'est pas important ici).

Lorsque vous essayez de vous connecter avec

mysql -u root -p --ssl-ca=/etc/mysql/ca-cert.pem --ssl-cert=/etc/mysql/client-cert.pem --ssl-key=/etc/mysql/client-key.pem --protocol=tcp 

J'ai toujours eu un message d'erreur Erreur de connexion SSL: version du protocole non-concordance

Cela me conduit au site http://bugs.mysql.com/bug.php?id=64870 qui confirme (pour moi) qu'il y a un bug.

Pour faire une longue histoire courte. A la fin, j'ai créé tous les certificats en utilisant mon MacOS X Lion, copié les certificats sur le serveur et le client et cela a fonctionné immédiatement! Quand j'ai réussi à faire fonctionner le côté Linux, Windows a aussi fonctionné! Comme mentionné ci-dessus, il vous suffit de définir client-clé, client-cert et ca-cert!