SSL CHAT - ARCHITECHTURE TRÈS SIMPLE CLIENT/SERVEUR

cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004 - 4 mars 2004 à 12:16
 Yacef - 10 août 2017 à 09:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20912-ssl-chat-architechture-tres-simple-client-serveur

simple et bon.
probléme de signature
ghassenam Messages postés 2 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 2 novembre 2010
2 nov. 2010 à 22:05
salam
brabi ana executit code 3la netbeans(6.9) é 3malit Run é 9ali :BUILD SUCCESSFUL
hors console ma5ajitlich brabi kifeh na3mil mich tjini haki console
é merci d'avance
cs_garri Messages postés 2 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 12 janvier 2010
12 janv. 2010 à 20:07
je me demande s'il y une personne qui peu m'expliquer en détaille la manière exécution de ces deux programmes
il me donne toujours une erreur
j'aimerai bien utilise eclipse

je vous remercie en avance
djroulo Messages postés 25 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 21 octobre 2008
9 janv. 2007 à 18:17
Bonjour,
tout d'abord, les paramètres indiqués dans le forum et dans les fichiers BAT doivent êtres utilisés pour que l'application puisse fonctionner.

Faire d'abord générer le certificat du SERVEUR.
Faire ensuite générer le certificat du CLIENT.
Ne pas oublier de paramètres, et bien vérifier que le port définit dans l'application est bien ouvert (par défaut je crois que c'est le port 3001).
Vous pouvez aussi importer vos certificats de sécurité dans le KEYSTORE Java (répertoire contenant les certificats générés).

Ensuite, vous pourrez utiliser les lanceurs pour lancer :
- le serveur en attendant qu'il s'inialise sur le port 3001
- le client en tapant en pramètre la machine sur laquelle on veut appeler le verveur, ici "localhost"...

Votre erreur concerne l'opération de Handshake, qui est la négociation, de fait l'échange des clés publiques. Cela concerne donc une erreur sur les certificats ou l'établissement de la connexion.

Bonne chance, j'espère que cela pourra vous aider.
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 1
9 janv. 2007 à 14:55
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

je pense que le serveur a un certificat pourri ou puis-je trouver de la doc sur les différents éléments que je dois remplire lorsque le keytoll se lance ? merci
geearf Messages postés 4 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 8 janvier 2006
8 janv. 2006 à 13:54
Moi je suis sur un projet de partage de fichiers sécurisé (pas un P2P), et mon but ici est de sécuriser les transferts, mais je ne veux pas obliger les personnes à se connaître d'avance .
ninjagtr Messages postés 5 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 11 décembre 2006
8 janv. 2006 à 11:36
Moi je pense au ssh, quand tu te connecte la première fois sur un serveur ssh, il y a une génération de clé (en tout cas dans le mode de connexion au serveur ssh par mot de passe, car il y a mode qui permet de pas saisir de mot de passe, mais juste avec une authentification d'un fichier de certif, ou quelque chose comme ça).
Je me base par rapport à ça, mais c'est peut être pas la même chose, en tout cas mon but c'est de pouvoir établir une connexion réseau (pour transmettre du texte ou autre chose) de manière sure (crypté...) et par la même occasion en apprendre un peu plus sur le cryptage.
geearf Messages postés 4 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 8 janvier 2006
8 janv. 2006 à 02:06
Merci bien je testerai cela, si tu penses que ce n'est pas la bonne solution, à quoi penserais tu ? c'est mon premier test de ssl donc j'ai peut etre de mauvaises idées la :)
ninjagtr Messages postés 5 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 11 décembre 2006
7 janv. 2006 à 22:58
Regarde ici http://javaalmanac.com/egs/javax.net.ssl/TrustAll.html?l=rel ,

Mais je suis pas sur que ce soit la bonne solution.
geearf Messages postés 4 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 8 janvier 2006
7 janv. 2006 à 22:45
Petit ajout sur mon commentaire, il faut en fait que j'échange les cles client / server, mais j'aimerai ne pas avoir à faire cela, pour que 2 'nouveaux' clients / servers puissent s'échanger des infos.

Une piste svp ?
ninjagtr Messages postés 5 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 11 décembre 2006
7 janv. 2006 à 22:21
Salut,

Je viens juste de commencer à travailler un peu sur le cryptage en java, je n'ai pas encore tout compris sur le fonctionnement de clé privée, public ... mais ça vient :) .
Au niveau des fichiers de certifications, j'en fais un avec Keytool, et après je le copie dans le répertoire serveur et client.
Je n'ai pas encore compris le but de l'export/import du fichier de certification.

Par contre quand je lance le serveur je fait juste :

java serverChat

et non pas :

java -Djavax.net.ssl.trustStore=serverkeys serverChat

car d'après ce que je vois dans le code, l'application va chercher elle même le fichier de certification (

String keystore = "serverkeys";
ks.load(new FileInputStream(keystore), keystorepass);
).

Et pour le client je fais pareil par contre je 'set' le truststore directement dans le code :

System.setProperty("javax.net.ssl.trustStore","serverkeys");

et je lance donc le client avec : java clientChat
geearf Messages postés 4 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 8 janvier 2006
6 janv. 2006 à 16:10
Salut,
je bloque avec le certificat je pense, car j'ai cette erreure une fois avoir tappé un message puis enter :

Couldn't get I/O for the connection to: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknownEEE.

Pourtant le certificat devrait être bon je pense.

Merci,
djroulo Messages postés 25 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 21 octobre 2008
24 sept. 2005 à 21:24
Ok pour pouvoir utiliser les commandes Java, il faut que tu définisse ton environement JAVA...
!!!! UTILISATEURS WINDOWS !!!!
tape par exemple à l'inviste DOS :
PATH = %PATH%;C:\Progra~1\J2SE\bin;
pour prendre en compte le répertoire contenant les fichiers exécutables du J2SE si ton répertoire JAVA se trouve bien dans "C:\Program Files\J2SE" mais là c'est à toi de chercher.
Lorsque tu tapes "javac serverChat.java" pour compiler l'exécutable doit marcher pareil pour keystore, repère où il se trouve et installe le J2SE SDK si besoin, car le JRE ne suffit pas.
Pour plus de renseignement essaye de chercher à "JAVA enironnement setup" je pense que tu devrais trouver ton bonheur. N'hésites pas à te faire un petit fichier BAT pour gérer ton environnement...

Bonne chance.
neo2005xp Messages postés 1 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 18 septembre 2005
18 sept. 2005 à 17:09
cette source m'interresse grandement surtout ke les socket ssl n'ont pas l'air si compliqué que ca mais sur le serveur ls.bat ne marche pas , je n'ai pas de fichier keystore je pense ke chez moi c le fichier gencert.bat ki ne marche pas. sous cmd il me dis k'il ne connai pas la commande keystore si je lance a la main la ligne de commande du .bat. kelkun pourrai m'aider j'aimerai bien comprendre la partie de generation des clef car j'avou etre un peu perdu la mé j'aimerai me servir des scket ssl ds des projet personnel en java.

Merci d'avance ;)
djroulo Messages postés 25 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 21 octobre 2008
30 avril 2004 à 03:26
Pour ce qui est des applets, on m'a souvent posé la question, et "MindTerm" fait ça très bien. MindTerm est surtout utilisé comme applet Java pour faire fonctionner un Terminal comme un serveur SSH par exemple. Très utile !!!
Voici l'adresse : http://www.appgate.com/products/5_MindTerm/4_Download/

Bon surf (prenez les sources de MindTerm pour y voir plus clair)...
cs_leuro Messages postés 1 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 13 avril 2004
13 avril 2004 à 17:15
Il y aurai t il une solution pour faire fonctionner le client en applet ?

merci
Le G@SP Messages postés 1 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 7 avril 2004
7 avril 2004 à 15:14
Hello,

bien sympa ce programme mais en effet les .bat ne servent à rien, voici comment faire fonctionner ça en tapant tout simplement "java serverChat" et "java clientChat"

o dans le repertoire du serveur on crée son certificat comme tu l'avais fait dans ton .bat (on créé un alias "nomPCserveur" dans un magasin de clés "serverkeys" avec comme mot de passe pour le magasin et la clé "serverpwd"):

keytool -genkey -keystore serverkeys -keyalg rsa -alias monPCserveur -storepass serverpwd -keypass serverpwd

o On exporte le certificat du serveur de ce magasin serverkeys dans un fichier server.cer :

keytool -export -keystore serverkeys -alias monPCserveur -file server.cer
(le mot de passe qu'il demande alors est "serverpwd")

o On crée un nouveau magasin de clés qui sera utilisé comme truststore par le client, on va appeler ce nouveau magasin jssecacerts par exemple (donnez n'importe quel mot de passe):

keytool -import -keystore jssecacerts -alias monPCserveur -file server.cer

o Y a plus qu'à mettre ce jssecacerts dans le repertoire lib/security du java home du PC où est le client et voila

à la limite y a qu'à faire un .bat ou un .sh qui fait tout ça, l'interêt c'est qu'une fois que c'est fait... c'est fait :)

un bon complément à ce tutorial où j'ai eu ces infos : http://www.onjava.com/pub/a/onjava/2001/05/03/java_security.html?page=1
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
5 mars 2004 à 08:37
RELAX, ne cherchez plus voici l'URL vers les infos JAVA OS

=> http://wwws.sun.com/software/javadesktopsystem/

B@ron [:)]
djroulo Messages postés 25 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 21 octobre 2008
4 mars 2004 à 16:31
En fait au sujet des .BAT, je les ai mis car c'est la seule facon de faire tourner le programme. Si vous avez regardé les batchs, vous avez vu que la commande spéciale qui les fait trouner utilise l'option
"-Djavax.net.ssl.trustStore=serverkeys" qui permet de spécifier que le certificat de sécurité que l'on veut utiliser se trouve dans le meme répertoire que le programme.

Vous pouvez tout aussi bien utiliser cette ligne de commande sous Linux, c'est sans probleme, il vous suffit d'extraire la ligne commancant par "java ......... nomduprogramme", mais je suis sur que vous l'aviez deja remarqué :-)

Je vais ajouter une fonctionnalité qui permet de faire tourner le serveur meme si quelqu'un quitte la conversation.
C'est a dire que la Socket sera recrée automatiquement... et ce d'ici peu.

Vive Linux :-p
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
4 mars 2004 à 13:28
Le chat des espions ... cool !
Pour le chat qui dort ... lol -> M'enfin mieux vaut au moins mettre des .BAT que rien du tout ... de temps en temps je mets des .sh mais bon ... quelqu'un qui connais les .sh sera facilement le transformer en .BAT alors que le contraire ce n'est pas gagner ... c'est ça d'avoir un OS de faignant ...
@+ tous les deux !
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
4 mars 2004 à 12:16
mmmh, évite de mettre des .bat pour quand tu utilises Java.
Le but c'est quand-même que java tourne egalement sur Linux-unix.
Tu as déjà consulté le JavaOS (basé sur linux) sur le site sun?

B@ron (sinon, ton code à l'air très intérêssant :)
[:)]
Rejoignez-nous