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

  FORUM HardWare.fr
  Programmation
  Java

  JAVA SSL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

JAVA SSL

n°1290848
gee
Bon ben hon
Posté le 24-01-2006 à 13:07:16  profilanswer
 

Bonjour,
 
j'ai un petit soucis avec SSL en fait :  
je travaille sur une application de partage de fichier, et on m'a demandé de sécuriser les connections, par conséquent je suis partis sur SSL (au début on m'avait demandé SSH mais je trouvais cela un peu gros par rapport à mes besoins ...).
 
J'utilise un server de message pour mon application, et un server de fichier par utilisateur pour l'application (en gros si j'ai un réseau avec moi et 2 personnes, j'aurais sur mon pc un server de message, 2 servers de fichiers, et un client globale (messsages et flux de données) ).
Quand un client envoie un fichier sur un server la connection SSL se passe bien, etc pas de soucis.
 
Quand 2 clients envoie chacun un fichier sur le même server, au bout d'un moment il y a un problème sur les messages (je ne vois pas vraiment ou d'ailleurs) et les 2 utilisateurs recoivent leur message (on voit bien les destinataires, les messages etc) mais par contre l'un des deux recoit comme port de connection celui de l'autre, et par conséquent le server ne recoit plus le fichier que d'une personne ... Je ne sais pas si c'est très clair, mais en gros au bout d'un moment les 2 utilisateurs envoient sur le même port et donc un est jeté (je travaille en TCP)..
 
Voici le code utilisé pour le server :  
 
protected SSLServerSocket serverSocket;
 protected SSLSocket socket;
 public int PORT;
 public static final String KEYSTORE_FILE = "server_keystore";
 public static final String ALGORITHM = "sunx509";
 public static final String PASSWORD = "password";
 
 protected Server(int port){
   
  PORT = port;
  serverSocket = null;
  KeyManagerFactory kmf;
  KeyManager[] km;
  KeyStore ks;
  TrustManagerFactory tmf;
  TrustManager[] tm;
  SSLContext sslc;
  try {
   ks = KeyStore.getInstance("JKS" );
   ks.load(new FileInputStream(KEYSTORE_FILE), PASSWORD.toCharArray());
   kmf = KeyManagerFactory.getInstance(ALGORITHM);
   kmf.init(ks, PASSWORD.toCharArray());
   km = kmf.getKeyManagers();
   tmf = TrustManagerFactory.getInstance(ALGORITHM);
   tmf.init(ks);
   tm = tmf.getTrustManagers();
   sslc = SSLContext.getInstance("TLS" );
   sslc.init(km, tm, null);
   SSLServerSocketFactory ssf = sslc.getServerSocketFactory();
   serverSocket = (SSLServerSocket) ssf.createServerSocket(PORT);
   //serverSocket = new ServerSocket(PORT);
  }  
  catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
 
reception de message :  
socket = (SSLSocket) serverSocket.accept();
ObjectInputStream objIn = new ObjectInputStream(socket.getInputStream());
 
 
reception de fichier
socket = (SSLSocket) serverSocket.accept();
in = socket.getInputStream();
 
 
code du client :  
private String address;
 private SSLSocket socket;
 public int PORT;  
 public static final String KEYSTORE_FILE = "client_keystore";
 public static final String ALGORITHM = "sunx509";
 public static final String PASSWORD = "password";
 private SSLSocketFactory sf;  
 
 public Client(){
   
  socket = null;
  KeyManagerFactory kmf;
  KeyStore ks;
  TrustManagerFactory tmf;
  SSLContext sslc;
   
  try {
   kmf = KeyManagerFactory.getInstance(ALGORITHM);
   ks = KeyStore.getInstance("JKS" );
   ks.load(new FileInputStream(KEYSTORE_FILE), PASSWORD.toCharArray());
   kmf.init(ks, PASSWORD.toCharArray());
   tmf = TrustManagerFactory.getInstance(ALGORITHM);
   tmf.init(ks);
   sslc = SSLContext.getInstance("TLS" );
   sslc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
   sf = sslc.getSocketFactory();
  }  
  catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
envoie de message :  
socket = (SSLSocket) sf.createSocket(user.getIpAdress(), PORT);
objOut  = new ObjectOutputStream(socket.getOutputStream());
 
envoie de flux :  
socket = (SSLSocket) sf.createSocket(user.getIpAdress(),PORT);
os = socket.getOutputStream();
 
J'ai généré les certificats SSL sur un pc, auto certifié et je les ai distribués sur les autres machines (j'ai suivi ce que disait ce site : http://www.labo-sun.com/resource-F [...] -java.htm)
 
 
Merci bien pour toute aide que vous pourriez m'apporter,

mood
Publicité
Posté le 24-01-2006 à 13:07:16  profilanswer
 

n°1291290
moi23372
Posté le 24-01-2006 à 19:40:30  profilanswer
 

Si j'ai bien compris, il te faut un serveur multithread gérant donc chacun sa partie. C'est con à mettre en place ça si c'est bien ça

n°1291454
gee
Bon ben hon
Posté le 24-01-2006 à 21:55:08  profilanswer
 

Salut,
on a deja cela en place en fait,
le server de message est unique, mais celui de fichier est dans un thread à chaque fois.
 
En fait sans le SSL ca marche parfaitement à plusieurs, mais avec SSL au dela de 2 utilisateurs ca foire :(
 
Merci bien,


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

  JAVA SSL

 

Sujets relatifs
Question bete sur un programme javaRetrouver le code source à partir d'un java .class ?
Probleme avec ma version JAVA ? j'arrive pas a faire tourner un prog ?[java] lire un feuille de calcul excel au format xml ?
java mobile bluetooth[Java] Runtime.exec() et environnement Windows et dll
[java] Les événements clavier ne fonctionnent pasSSL avec Tomcat et java
Client Java avec securité SSL[ JAVA ] Sécurité ? SSL ? servlet.
Plus de sujets relatifs à : JAVA SSL


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