begin process at 2010 02 10 12:01:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurite & cryptage

 > SSL CHAT - ARCHITECHTURE TRÈS SIMPLE CLIENT/SERVEUR

SSL CHAT - ARCHITECHTURE TRÈS SIMPLE CLIENT/SERVEUR


 Information sur la source

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurite & cryptage Niveau :Initié Date de création :03/03/2004 Vu / téléchargé :20 611 / 30 699

Auteur : djroulo

Ecrire un message privé
Site perso
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce petit programme très simple, permet simplement d'utiliser les fonctionnalités de SSL en créant une SSLSocket et une SSLServerSocket.

Cette architecture est donc basée Client/Serveur.
Le programme de chat en lui même n'est pas intéressant puisque très limité.
Mais la construction d'une SSL Socket et d'une SSLServerSocket, ça se voit rarement en sources.

Pour ce qui est des commentaires, n'y faites pas attention, vous pouvew les remanier.

Vous devez modifier les fichiers gen_cert.bat pour générer vos propres certificats depuis l'invite MS-DOS.

Le client se lance depuis la commande "lc.bat" mais vous devez la modifier si vous mettez votre serveur sur au autre PC distant : vous devez remplacer myhost.mydomain.com par une adresse IP ou une adresse DynDNS, ce que vous voulez qui représente l'adresse de l'ordinateur serveur.

Le port de l'application est 3001, alors n'oubliez pas de vérifier que votre firewall n'empêche pas la communication.

Le serveur se lance par "ls.bat" et vous n'avez rien à modifier au moment actuel.

Vous pouvez vous servir du code pour rendre votre application Socket crypté puisque le programme en soit n'a que très peu d'intérêts.

Si vous voulez de l'aide, écrivez moi à petit_hom@yahoo.fr je ferai mon possiblepour vous répondre dans les temps.

;-)


 Conclusion

Première étape, lancer le serveur sur une ordinateur ayant le port 3001 ouvert.
Deuxième étape, lancer le client et changer "lc.bat" pour que ça marche...

Bonne chance !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip ARCHITECTURE CLIENT-SERVEUR TCP

 Sources de la même categorie

CRYPTAGE SELON LA MÉTHODE DE CÉSAR par pyo656
Source avec Zip @$!__STEGACHAR__451 par CHAR As Human
Source avec Zip CHIFFREMENT AES (ADVANCED ENCRYPTION STANDARD) 128 BITS par ciberrique
Source avec Zip CHIFFREMENT RSA (RIVEST SHAMIR ADLEMAN) par ciberrique
Source avec Zip CALCUL DE HASH SHA 256 par ciberrique

Commentaires et avis

Commentaire de tds le 04/03/2004 12:16:59

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 :)
[:)]

Commentaire de neodante le 04/03/2004 13:28:21 administrateur CS

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 !

Commentaire de djroulo le 04/03/2004 16:31:03

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

Commentaire de tds le 05/03/2004 08:37:57

RELAX, ne cherchez plus voici l'URL vers les infos JAVA OS

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

B@ron [:)]

Commentaire de Le G@SP le 07/04/2004 15:14:35

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

Commentaire de leuro le 13/04/2004 17:15:19

Il y aurai t il une solution pour faire fonctionner le client en applet ?

merci

Commentaire de djroulo le 30/04/2004 03:26:27

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)...

Commentaire de neo2005xp le 18/09/2005 17:09:27

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 ;)

Commentaire de djroulo le 24/09/2005 21:24:10

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.

Commentaire de geearf le 06/01/2006 16:10:16

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,

Commentaire de ninjagtr le 07/01/2006 22:21:00

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

Commentaire de geearf le 07/01/2006 22:45:36

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 ?

Commentaire de ninjagtr le 07/01/2006 22:58:28

Regarde ici http://javaalmanac.com/egs/javax.net.ssl/TrustAll.html?l=rel ,

Mais je suis pas sur que ce soit la bonne solution.

Commentaire de geearf le 08/01/2006 02:06:13

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 :)

Commentaire de ninjagtr le 08/01/2006 11:36:02

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.

Commentaire de geearf le 08/01/2006 13:54:27

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 .

Commentaire de omcougar le 09/01/2007 14:55:07

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

Commentaire de djroulo le 09/01/2007 18:17:15

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.

Commentaire de garri le 12/01/2010 20:07:33

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

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales