Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2594 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  SSL pour accéder à un serveur HTTPS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SSL pour accéder à un serveur HTTPS

n°2016632
yann39
⛅⏰♫♪☹☕
Posté le 13-08-2010 à 08:51:04  profilanswer
 

Bonjour,
 
je cherche à accéder à un serveur HTTPS (via une connexion webdav).
 
Lorsque j'exécute le programme en local, tout fonctionne, j'arrive à lister des répertoires, créer des répertoires, etc... sur le serveur.
 
Mais lorsque j'exécute le programme depuis le web (j'ai charger mon programme java dans un base Oracle), j'obtiens une erreur de permission côté serveur :
 

Code :
  1. javax.net.ssl.SSLHandshakeException:
  2. java.security.cert.CertificateException: Could not find trusted certificate


 
En effet je ne gère pas les certificats dans mon programme. J'ai demandé à mon DBA et il m'a dit que dans la base, le certificat est situé dans :
/ORA/db002/syscontrol/etc/WALLETS/rdbms
et que je devais le spécifier quelquepart dans mon programme.
 
J'ai parcouru pas mal de choses sur le net et j'ai tester beaucoup de code mais je n'arrive pas à intégrer le fonctionnement à mon programme qui est le suivant :
 

Code :
  1. public static HttpClient initialiser_connexion(String hote, String login, String password) {
  2.         String uri = hote;
  3.         HostConfiguration hostConfig = new HostConfiguration();
  4.         hostConfig.setHost(uri);
  5.         HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
  6.         HttpConnectionManagerParams params = new HttpConnectionManagerParams();
  7.         int maxHostConnections = 20;
  8.         params.setMaxConnectionsPerHost(hostConfig, maxHostConnections);
  9.         connectionManager.setParams(params);
  10.         HttpClient client = new HttpClient(connectionManager);
  11.         client.setHostConfiguration(hostConfig);
  12.         Credentials creds2 = new UsernamePasswordCredentials(login,password);
  13.         client.getState().setCredentials(AuthScope.ANY, creds2);
  14.         DavMethod method = new PropFindMethod("https://chemin_du_dossier_a_lister", DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);
  15.         client.executeMethod(method);
  16.         //affichage
  17.     }


 
Pouvez-vous me donner un petit coup de main ?
 
Merci :)


---------------
Topic achats/ventes | Feed-back | Worklog
mood
Publicité
Posté le 13-08-2010 à 08:51:04  profilanswer
 

n°2016780
the real m​oins moins
Posté le 13-08-2010 à 16:39:13  profilanswer
 
n°2016783
yann39
⛅⏰♫♪☹☕
Posté le 13-08-2010 à 16:51:28  profilanswer
 

Oui j'ai lu ça ;)
 
Mais à vrai dire je n'ai pas tout compris, je ne vois pas trop où est faite la gestion des certificats ...
 
A la place de new MySSLSocketFactory() il faut que j'utilise une des classes EasySSLProtocolSocketFactory, StrictSSLProtocolSocketFactory ou AuthSSLProtocolSocketFactory ?


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018469
pop-pan
yay!
Posté le 23-08-2010 à 13:57:46  profilanswer
 

par defaut le truststore c'est [javahome]/lib/security/cacerts/
si ton truststore est différent
> java -Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keyStorePassword=123456 MyServer
 
si tu as besoin de load un cert dans ton code j'ai trouvé ca sur le forum :
http://forum.hardware.fr/hfr/Progr [...] 3633_1.htm


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2018538
yann39
⛅⏰♫♪☹☕
Posté le 23-08-2010 à 20:44:17  profilanswer
 

Merci pour ta réponse.
 
Je ne suis pas en local. Le programme java s'exécute dans la base de données. Ce n'est pas moi qui créé le certificat, d'ailleurs je n'ai aucun accès au système de fichiers, juste un droit de read sur le certificat (en fait sur les 2 fichiers cwallet.sso et ewallet.p12).
 
Depuis j'ai mis en place la partie permettant de loader le .sso (je n'ai pas le code sous la main, il est au boulo) qui devrais fonctionner, mais j'obtiens une erreur :
 
java.io.IOException: Invalid keystore format  
 
Je peux choper un .cert pour essayer de regénérer le sso avec keytool, mais dans tous les cas je ne pourrai pas le mettre sur le serveur. J'ai mailé mon dba vendredi, il n'a toujours pas répondu ...


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018546
pop-pan
yay!
Posté le 23-08-2010 à 21:47:39  profilanswer
 

normalement tu ne store pas le cert dans le keystore, mais tu l'importe avec le keytool correspondant a ton jdk/jre.
 
tu peux essayer
System.out.println(java.security.KeyStore.getDefaultType());
ca te donne le format attendu par defaut du keystore.
 
apres a toi de voir si le cert est en x509 ou autre et ensuite de l'importer dans ton keystore.


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2018548
yann39
⛅⏰♫♪☹☕
Posté le 23-08-2010 à 22:22:47  profilanswer
 

Oui j'ai déjà tenté le println. J'obtiens "jks" si mes souvenirs sont bons, c'est bien ce que j'ai spécifié.
 
Comment être sûr que le cert est en x509?  
 
Nous possèdons notre propre autorité de certification.  
J'ai accès aux certificats via la documentation. ( https://ca.cern.ch/ca/Help/?kbid=021010 )
 
 :jap:


Message édité par yann39 le 23-08-2010 à 22:23:39

---------------
Topic achats/ventes | Feed-back | Worklog
n°2018554
pop-pan
yay!
Posté le 23-08-2010 à 23:18:01  profilanswer
 

ouep ca a l'air d'etre correct tout ca.
quand j'ai besoin d'acceder a ce type de certs en général je me debrouille pour obtenir un .der j'avais galéré a une epoque (genre il y a looongtemps, jdk 1.1 ou quoi) et a l'epoque impossible d'importer des pkcs12. on etait passé par des trucs farfelus mais je n'ai plus le code source
 
il me semble que ds le thread "java elite" plusieurs personnes sont confrontées a un probleme similaire.
 
désolé de ne pouvoir t'aider plus, je regarderais plus en détail si je trouve quelque chose :(
 
sinon fait des tests autour du toCharArray(), en fonction de ce que tu  recuperes des fois c'est necessaire et des fois non :)
 
[edit]
heuuu attends un peu, essaie de definir ton keystore type en pkcs12 au lieu de jks pour voir :)
sinon tu peux essayer d'extraire le cert x509 du pkcs12 et l'importer dans ton keystore.
[/edit]


Message édité par pop-pan le 23-08-2010 à 23:25:49

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2018555
yann39
⛅⏰♫♪☹☕
Posté le 23-08-2010 à 23:25:16  profilanswer
 

Je vais attendre la réponse du DBA, j'ai déjà perdu assez de temps avec çà, surtout si il connais la solution (il à l'air assez calé avec ça).
 
Si il n'a pas de solution je ferai des tests plus poussé :)
 
En tous cas merci pour ton aide ;)
Je te tient au courant.


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018556
pop-pan
yay!
Posté le 23-08-2010 à 23:26:16  profilanswer
 

je viens de faire un edit, je te le remet :
 
heuuu attends un peu, essaie de definir ton keystore type en pkcs12 au lieu de jks pour voir :)
sinon tu peux essayer d'extraire le cert x509 du pkcs12 et l'importer dans ton keystore.


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
mood
Publicité
Posté le 23-08-2010 à 23:26:16  profilanswer
 

n°2018574
yann39
⛅⏰♫♪☹☕
Posté le 24-08-2010 à 08:39:30  profilanswer
 

Déjà testé avec pkcs12 :  
 
java.security.KeyStoreException: pkcs12 not found
 
Le code :
 

Code :
  1. KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509" );
  2. Provider provider = Security.getProvider("SUN" );
  3. KeyStore keyStore = KeyStore.getInstance("jks",provider);
  4. FileInputStream walletFile = new FileInputStream("/ORA/db002/syscontrol/etc/WALLETS/rdbms/cwallet.sso" );
  5. keyStore.load(walletFile,"secret".toCharArray());
  6. walletFile.close();
  7. keyManagerFactory.init(keyStore, "secret".toCharArray());
  8. Certificate[] cchain = keyStore.getCertificateChain("certif" );
  9. System.out.println(cchain.toString());


 
J'ai seulement les fichiers cwallet.sso et ewallet.p12 en lecture, je ne pense pas pouvoir faire quelquechose avec :/


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018628
pop-pan
yay!
Posté le 24-08-2010 à 10:45:57  profilanswer
 

je pensais plutot à ca :
 
      KeyStore ks = KeyStore.getInstance("PKCS12" );
      FileInputStream fis = new FileInputStream("/ORA/db002/syscontrol/etc/WALLETS/rdbms/ewallet.p12" );
      ks.load(fis, "secret".toCharArray());


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2018655
yann39
⛅⏰♫♪☹☕
Posté le 24-08-2010 à 12:01:31  profilanswer
 

Hmmm je ne connais pas le password du p12.
J'utilise le sso car c'est sans password.
 
Non ?


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018659
pop-pan
yay!
Posté le 24-08-2010 à 12:12:44  profilanswer
 

t'as pas forcement besoin de fournir le password, il sert normalement a controller l'integrité du keystore.


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2018664
yann39
⛅⏰♫♪☹☕
Posté le 24-08-2010 à 12:46:35  profilanswer
 

Ah ok !
 
Bon et bien il faut que je demande les droits en lecture sur le fichier p12 et je test ça ;)


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018666
pop-pan
yay!
Posté le 24-08-2010 à 13:04:13  profilanswer
 

dsl si je me suis mal exprimé  
 
tu n'as pas forcement besoin de pwd si tu utilise le SSO, pour le p12 tu en aura besoin.
le .sso c'est un .p12 encrypté.
 
avec le .sso ca donnerait ca du coup :
      KeyStore ks = KeyStore.getInstance("SSO" );
      FileInputStream fis = new FileInputStream("/ORA/db002/syscontrol/etc/WALLETS/rdbms/cwallet.sso" );
      ks.load(fis, "" );  
 
par contre verifie que le provider SUN propose le SSO, car les formats ne sont pas toujours compatibles.
si tu bosse avec oracle (ca semble etre le cas :) ) il faut certainement register le provider Oracle PKI si il n'y est pas.
 
genre :
      Security.addProvider(new OraclePKIProvider()); // je sais pas si c'est la bonne classe, a toi de regarder mais il doit y avoir Oracle et Pki dedans si c'est propre :)
      ...
      KeyStore ks = KeyStore.getInstance("SSO","OraclePKIMachin" ); // pareil, faut checker le name fourni
      ...
 
je sais pas si c'est super clair mais effectivemment les certs c'est l'echec des qu'on arrive aux implémentations.
 
bonne chance :)


Message édité par pop-pan le 24-08-2010 à 13:15:31

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2018697
yann39
⛅⏰♫♪☹☕
Posté le 24-08-2010 à 14:31:58  profilanswer
 

OK c'est bien ce qu'il me semblait :p
 

Code :
  1. Provider[] providers = Security.getProviders();
  2. for (int i=0;i<providers.length;i++)
  3.    System.out.println(providers[i]);


 
Me donne :
 
SUN version 1.5
SunRsaSign version 1.5
SunJSSE version 1.5
SunJCE version 1.5
SunJGSS version 1.0
SunSASL version 1.5
 
Si je met autre chose que "SUN", j'obtiens :
 
java.lang.IllegalArgumentException: missing provider
 
Je vais regarder du côté de l'enregistrement du provider ;)


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018704
pop-pan
yay!
Posté le 24-08-2010 à 15:05:50  profilanswer
 

petite recherche me rends ca :
oraclepki.jar
ojpse.jar  
qui sont normalement dans $ORACLE_HOME/jlib
 
http://www.findjar.com/index.x?query=oraclepki


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2018715
yann39
⛅⏰♫♪☹☕
Posté le 24-08-2010 à 15:49:01  profilanswer
 

OK merci j'ai bien ces lib.
 
J'ai testé ceci :
 

Code :
  1. KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509" );
  2. Security.addProvider(new OraclePKIProvider());
  3. KeyStore keyStore = KeyStore.getInstance("PKCS12","OraclePKI" );
  4. FileInputStream walletFile = new FileInputStream("/ORA/dbs01/syscontrol/etc/WALLETS/rdbms/ewallet.sso" );
  5. keyStore.load(walletFile,"secret".toCharArray());
  6. walletFile.close();
  7. keyManagerFactory.init(keyStore, "secret".toCharArray());


 
mais j'obtiens encore une erreur de privilège, il faut que je demande à l'admin de me grant ça pour voir si ça fonctionne :)
 

Code :
  1. ORA-29532: Java call terminated by uncaught Java exception: java.security.AccessControlException: the Permission (java.security.SecurityPermission putProviderProperty.OraclePKI) has not been granted to SURVEY. The PL/SQL to grant this is dbms_java.grant_permission( 'SURVEY', 'SYS:java.security.SecurityPermission', 'putProviderProperty.OraclePKI', '' )
  2. ORA-06512: at "SURVEY.LIRE_DFS", line 1
  3. ORA-06512: at line 11


 
Je te tient au courant.
 
Merci.


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018743
pop-pan
yay!
Posté le 24-08-2010 à 17:00:52  profilanswer
 

heuuu, cwallet.sso non?
et du coup teste avec "PKCS12" et "SSO"


Message édité par pop-pan le 24-08-2010 à 17:01:19

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2018746
yann39
⛅⏰♫♪☹☕
Posté le 24-08-2010 à 17:12:05  profilanswer
 

Oui bien sûr, j'avais oublié de changer [:tinostar]
 
Mais ça ne change pas l'exception, dans tous les cas il me faudra le privilège "putProviderProperty.OraclePKI".
 
;)


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018949
yann39
⛅⏰♫♪☹☕
Posté le 25-08-2010 à 14:35:17  profilanswer
 

Bon et bien réponse de l'admin :
 

Citation :

We do not have anything to support PKI in the oracle databases


 
et il ne m'a pas donné le privilège.
 
Retour au point de départ ...


---------------
Topic achats/ventes | Feed-back | Worklog
n°2018993
pop-pan
yay!
Posté le 25-08-2010 à 16:23:17  profilanswer
 

en gros :
- tu as les droit en lecture sur les certs.
- tu n'as pas le droit de declarer le provider pour exploiter les certs (alors que c'est le provider Oracle...)
 
tu peux essayer de filouter ; sortir le cert en .der et le stocker quelque part :) du coup t'auras pas besoin de declarer un autre provider
 
je vois vraiment pas quoi faire d'autre


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2019003
yann39
⛅⏰♫♪☹☕
Posté le 25-08-2010 à 17:08:51  profilanswer
 

Je suis vraiment obligé de passer par le provider Oracle PKI ?
 
Je ne peux stocker que dans la base de données, je n'ai aucun accès au serveur. Je suis sensé utilisé les fichiers fournis dans la base.
 
Je vais essayer de contacter quelqu'un d'autre car l'admin Oracle je crois qu'il n'a pas bien envi de m'aider !


---------------
Topic achats/ventes | Feed-back | Worklog
n°2019111
lasnoufle
La seule et unique!
Posté le 26-08-2010 à 12:34:05  profilanswer
 

Bon, j'ai pas tout suivi parce que j'y comprends rien à tout ca, mais j'avais eu un problème similaire il y a quelques années, moins le coté Java dans la BD qui semble etre le gros problème. J'me souviens que quoi que je fasse avec l'outil en ligne de commande, le certificat rentré dans le keystore ne "marchait" pas (meme si effectivement visible depuis le code). Malheureusement je ne bosse plus dans la meme boite donc pas moyen d'aller chercher le code, mais je me souviens vaguement d'avoir fait un mix de:
- j'accepte tous les certificats les yeux fermés genre http://www.exampledepot.com/egs/ja [...] stAll.html
- pendant que je les "accepte", j'en profite pour l'ajouter au keystore genre http://exampledepot.com/egs/java.security/AddCert.html mais ca il semble que ca bloque pour toi
One-shot de ca, et une fois le certificat stocké correctement, je repasse en mode "normal".
 
Tout ca pour dire: accepter les yeux fermés, ca fait gros porc, mais ca irait pas? Après tout je suppose que tu "cibles" ton appel sur une URL bien précise donc tu lui fais confiance, SSL ou pas.


---------------
C'était vraiment très intéressant.
n°2019114
yann39
⛅⏰♫♪☹☕
Posté le 26-08-2010 à 12:50:22  profilanswer
 

Merci pour ta réponse.
 
Alors oui j'avais déjà testé en acceptant tous les certificats. Ca fonctionne bien sauf que je n'arrive pas à utilser HTTP Client car le but c'est de créer des répertoires après. Le code était le suivant :
 

Code :
  1. public static void lister(String hote, String login, String password) {
  2.         BufferedReader reader = null;
  3.         try {
  4.             URL url = new URL("https://cern.ch/rep1/rep2/rep3/commands.txt" );
  5.             TrustManager[] trustManagerArray = getAllTrustingTrustManager();
  6.             SSLContext sslContext = SSLContext.getInstance("TLS" );
  7.             sslContext.init(null, trustManagerArray, null);
  8.             HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
  9.             Authenticator.setDefault(new Authentification(login,password));
  10.             HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
  11.             reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  12.                      
  13.             String ligne;                   
  14.             while ((ligne = reader.readLine()) != null)   
  15.                 System.out.println("\t"+ligne);       
  16.             System.out.println("\n\nEND!!" );
  17.         }
  18.         catch(KeyManagementException e){e.printStackTrace();}
  19.         catch(NoSuchAlgorithmException e2){e2.printStackTrace();}
  20.         catch(MalformedURLException e3){e3.printStackTrace();}
  21.         catch(IOException e4){e4.printStackTrace();}
  22.     }


 
Ca fonctionne mais maitenant comment créer des répertoires ?
 
J'arrive seulement à créer des répertoire en faisant comme ceci (en local car pas de gestion des certificats justement) :
 

Code :
  1. public static HttpClient initialiser_connexion(String hote, String login, String password) {
  2.         //On créé le HostConfiguration qui permet de définir l'hôte du serveur WebDAV
  3.         String uri = hote;
  4.         HostConfiguration hostConfig = new HostConfiguration();
  5.         hostConfig.setHost(uri);
  6.          //On défini un HttpConnectionManager, qui permet de gérer les connexions, et éventuellement le multithreading  
  7.         HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
  8.         HttpConnectionManagerParams params = new HttpConnectionManagerParams();
  9.         int maxHostConnections = 20;
  10.         params.setMaxConnectionsPerHost(hostConfig, maxHostConnections);
  11.         connectionManager.setParams(params);
  12.         //On créé l'objet HttpClient et on lui passe les données d'authentification  
  13.         HttpClient client = new HttpClient(connectionManager);
  14.         client.setHostConfiguration(hostConfig);
  15.         Credentials creds2 = new UsernamePasswordCredentials(login,password);
  16.         client.getState().setCredentials(AuthScope.ANY, creds2);
  17.         return client;
  18.     }
  19.    
  20.     public static void creerRepertoireDFS(String chemin, String nom_repertoire) {
  21.        try
  22.        {
  23.             HttpClient client = initialiser_connexion("truc.cern.ch","monlogin","monpassword" );
  24.             //Création du répertoire via la méthode MKCOL
  25.             EntityEnclosingMethod mkcol = new EntityEnclosingMethod(chemin + nom_repertoire){
  26.                 public String getName() { return "MKCOL"; }
  27.             };
  28.             client.executeMethod(mkcol);
  29.             System.out.println("Répertoire " + chemin + nom_repertoire + " créé avec succès." );
  30.             mkcol.releaseConnection();
  31.        }
  32.        catch(IOException ioe) {
  33.            ioe.printStackTrace();
  34.        }
  35.     }


 
Donc il faut faire un mix des deux. Pour le moement soit j'arrive à créer des répertoires mais sans gestion de certificats, soit j'arrive à accéder aux fichiers en acceptant tous les certificats, mais je n'arrive pas à créer de répertoires...
 
En tous cas accepter "les yeux fermés" comme tu dis suffierait, car en effet j'accède à une URL bien précise, et de plus le code sera exécuté depuis une application intranet protégée par login/password.


---------------
Topic achats/ventes | Feed-back | Worklog
n°2019122
lasnoufle
La seule et unique!
Posté le 26-08-2010 à 13:26:50  profilanswer
 

Mh ouais je vois, pas sur de pouvoir t'aider du coup, je connais pas du tout. J'ai quand meme survolé la doc et fait une recherche vite fait, un truc comme ca ca irait pas? -> http://ross-o.com/index.php?/archi [...] lient.html
Récupères ses classes EasySSLProtocolSocketFactory et EasyX509TrustManager, puis dans ton deuxième bloc de code que tu m'as copié/collé, ligne 5, à la place de

Code :
  1. hostConfig.setHost(uri);


tu mets

Code :
  1. hostConfig.setHost(uri,443,new Protocol("https",(ProtocolSocketFactory) new EasySSLProtocolSocketFactory(),443));


en mettant le bon port si c'est pas 443 évidemment.
Au pif comme ca, ca devrait le faire. Maintenant la pratique...

 

Edit: évidemment si ca marche faudra améliorer tout ca pour ne créer qu'un object Protocol et l'utiliser automatiquement, etc.


Message édité par lasnoufle le 26-08-2010 à 13:28:09

---------------
C'était vraiment très intéressant.
n°2019124
yann39
⛅⏰♫♪☹☕
Posté le 26-08-2010 à 13:30:22  profilanswer
 

J'avais déjà essayer la classe EasySSLProtocolSocketFactory mais elle ne compilait pas je ne sais plus pourquoi.
 
Je vais quand même réessayer avec le lien que tu m'a donné.
 
En tous cas merci d'essayer de m'aider ;)


---------------
Topic achats/ventes | Feed-back | Worklog
n°2019806
yann39
⛅⏰♫♪☹☕
Posté le 30-08-2010 à 10:05:23  profilanswer
 

Bon bah je dois vraiment être mauvais, je fais exactement comme dans la doc et ça ne fonctionne pas :
 

Code :
  1. public static String creerRepertoireDFS(String chemin, String nom_repertoire) {
  2.        try
  3.        {
  4.             //Configuration du protocol
  5.             Protocol easyhttps = new Protocol("https",(ProtocolSocketFactory) new EasySSLProtocolSocketFactory(),443);
  6.             Protocol.registerProtocol("https", easyhttps);
  7.             HttpClient client = new HttpClient();
  8.             client.getHostConfiguration().setHost("monserv.ch", 443, easyhttps);
  9.            
  10.             //Identification
  11.             Credentials creds2 = new UsernamePasswordCredentials("my_login","my_password" );
  12.             client.getState().setCredentials(AuthScope.ANY, creds2);
  13.             //Création du répertoire via la méthode MKCOL
  14.             EntityEnclosingMethod mkcol = new EntityEnclosingMethod(chemin + nom_repertoire){
  15.                 public String getName() { return "MKCOL"; }
  16.             };
  17.             client.executeMethod(mkcol);
  18.             System.out.println("Répertoire " + chemin + nom_repertoire + " créé avec succès." );
  19.             mkcol.releaseConnection();
  20.             return "OK";
  21.        }
  22.        catch(IOException ioe) {
  23.            ioe.printStackTrace();
  24.            return "IOException : " + ioe.toString();
  25.        }
  26.     }


 

Code :
  1. javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Could not find trusted certificate


 
:/


---------------
Topic achats/ventes | Feed-back | Worklog
n°2021057
yann39
⛅⏰♫♪☹☕
Posté le 03-09-2010 à 15:46:26  profilanswer
 

J'ai essayé d'intégrer le chargement du certificat dans la classe EasySSLProtocolSocketFactory, sans succès (org.apache.commons.httpclient.HttpClientError: java.io.IOException: Invalid keystore format) :
 

Code :
  1. private static SSLContext createEasySSLContext() {
  2.           try {
  3.             Provider provider = Security.getProvider("SUN" );
  4.             KeyStore keyStore = KeyStore.getInstance("jks",provider);
  5.             FileInputStream walletFile = new FileInputStream("/ORA/db001/syscontrol/etc/WALLETS/rdbms/cwallet.sso" );
  6.             keyStore.load(walletFile,"".toCharArray());
  7.             walletFile.close();
  8.             SSLContext context = SSLContext.getInstance("SSL" );
  9.             context.init(null, new TrustManager[] { new EasyX509TrustManager(keyStore) }, null);
  10.             return context;
  11.           } catch (Exception e) {
  12.                throw new HttpClientError(e.toString());
  13.           }
  14.      }


 
Je laisse tombé pour le moment. Merci à ceux qui ont essayé de m'aider ;)
 
Si un jour quelqu'un passe sur ce topic et à une idée qu'il n'hésite pas !
 
Bye.


Message édité par yann39 le 03-09-2010 à 15:49:22

---------------
Topic achats/ventes | Feed-back | Worklog
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  SSL pour accéder à un serveur HTTPS

 

Sujets relatifs
acceder à une propriété d'un objet par l'intermédiaire d'un stringProblème SSL, générer les fichiers .csr et .key
Téléchargement et SSL (Download Over SSL)Programmation réseau client serveur
[JDBC]Serveur Mysql local[ORACLE] configurer nom serveur DB pour Discoverer web
[C] Multi-client/Serveur que choisir ?Comment installer Joomla! sur un Yahoo! small business serveur
[connexion MySQL serveur windows]PHP ne peut charger l'extension mysqlJoomla/ pour chaque site à créer il faut réinstaller sur le serveur ?
Plus de sujets relatifs à : SSL pour accéder à un serveur HTTPS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR