Bonjour,
je dois travailler sur une appli qui doit exécuter des requêtes SQL sur un serveur mysql du réseau local qui n'accepte les connexions extérieures que via SSL.
J'ai récupéré les fichiers client-key.pem, client-cert.pem et ca-cert.pem depuis le serveur.
Je pense avoir créé correctement les fichiers truststore et keystore grâce à keytool (mais je suis pas à l'abri d'une erreur).
J'ai suivi le tuto suivant :
http://dev.mysql.com/doc/refman/5.0/...using-ssl.html
Je précise que j'arrive à me connecter sans problème en ligne de commandes via la commande :
voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part mysql --host toto.fr -u ursule -p --ssl --ssl-ca ./cert/ca-cert.pem --ssl-cert ./cert/client-cert.pem --ssl-key ./cert/client-key.pem
Bien entendu j'ai modifié les informations confidentielles...
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
28
29
30
31
32
33
34
35
36
37
38
39
40 /** * Gère les connections à une base de données, l'envoi de requètes et la lecture * des résultats */ package com.toto.bdd; import java.sql.Connection; import java.sql.DriverManager; import java.util.Enumeration; import java.util.Properties; /** * @author huit_six * */ public class Requete { private Properties properties = new Properties(); public Requete() { System.setProperty("javax.net.ssl.keyStore","/home/huit_six/Bureau/op/cert/keystore"); System.setProperty("javax.net.ssl.keyStorePassword","toto"); System.setProperty("javax.net.ssl.trustStore","/home/huit_six/Bureau/op/cert/truststore"); System.setProperty("javax.net.ssl.trustStorePassword","toto"); System.setProperty("javax.net.debug","all"); properties.setProperty("user", "ursule"); properties.setProperty("password", "toto"); properties.setProperty("useSSL", "true"); try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://toto.fr:3306/pharma"; Connection conn = DriverManager.getConnection(url, properties); System.out.println("Connection effective !"); } catch (Exception e) { e.printStackTrace(); } } }
Je précise que j'arrive bien à me connecter à ma base de tests en local sans SSL donc ça ne vient pas d'un problème d'installation de JDBC ni du pilote.
De toute façon, l'exception levée est :
Il semble bien que ce soit un problème d'authentification donc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.sql.SQLException: Access denied for user 'ursule'@'toto.fr' (using password: YES)
Comme j'avoue ne pas être vraiment calé en SSL, je n'ai vraiment plus d'idée pour déboguer ça.
Pourriez-vous m'aider ?
D'avance merci !
PS: Je précise que je n'ai pas pu tester sn SSL sur ma base locale perso parce qu'en bidouillant ces histoires de SSL j'ai bloqué ma base...
Partager