Bonjour,
Je viens de mettre en œuvre dans un contexte d'étude une connexion jdbc MySQL à l'aide de JPA 2.0 eclipselink en utilisant la sécurité SSL. Je travaille sous NetBeans 7.3 avec le jdk 1.7.
J'ai créé mes fichiers pem côté MySQL, j'ai généré mon keystore et mon truststore côté client, j'établis la connexion sans problème en directe, à l'aide d'une instance de java.sql.Connection. J'ai pris soin d'activer le mode debugage et je vois bien les traces SSL me montrer mes trames dans leur version cryptée, puis décryptée. Aucun problème.
J'ai compris que dans le cas de JPA, il me fallait agir au niveau du fichier de persistance xml pour préciser l'argument useSSL=true dans l'URL de connexion. Cependant, j'aimerai savoir s'il est possible d'intégrer la déclaration des fichiers keystore et truststore dans le fichier de persistance. Pour l'instant, je les déclare ainsi dans mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
        System.setProperty("javax.net.ssl.keyStore","C:\\Users\\thierry\\keystore");
        System.setProperty("javax.net.ssl.keyStorePassword","********");
        System.setProperty("javax.net.ssl.trustStore","C:\\Users\\thierry\\truststore");
        System.setProperty("javax.net.ssl.trustStorePassword","********");
        System.setProperty("javax.net.debug","all");
Ici, j'ai évidement mis des étoiles en guise de mot de passe, mais dans la réalité, on pourrait lire le vrai mot de passe en clair.
Bref, en faisant ainsi et en m'assurant que les lignes ci-dessus soient éxécutées avant mes instances d'EntityManager, le simple fait d'ajouter l'attribut useSSL=true dans l'url de connexion du fichier de persistence, ça fonctionne.
Est-ce qu'il existe des 'clés' spécifique que l'on pourrait déclarer dans le fichier de persistance pour fournir ces informations ?