Construction et documentation de l’architecture Java client/serveur avec multithreading, communication TCP et interface Swing.
Application de chat Java sécurisée avec SSL/TLS
Application Java client/serveur avec sockets TCP, SSL/TLS, validation de certificats, stockage MySQL, interface Swing et tests de sécurité avec Wireshark.
Points clés
- Le projet met en œuvre un vrai cas client/serveur sécurisé au lieu de rester au niveau théorique.
- L’effet de SSL/TLS a été validé par comparaison entre trafic lisible sans chiffrement et trafic illisible une fois le chiffrement activé.
- Java réseau, certificats, base de données, interface graphique et rapport de test sont réunis dans un même projet.
Ce que j'ai pris en charge
Configuration SSL/TLS avec sockets sécurisées Java, keystore, truststore et comportement de validation de certificat.
Intégration du stockage MySQL pour les utilisateurs et messages horodatés, avec une commande /history pour récupérer l’historique.
Production d’une documentation technique, d’un guide utilisateur et d’un rapport de test couvrant communication en clair, certificat invalide, chiffrement et stockage.
Résultats et preuves
Architecture du chat sécurisé
Timeline
Construire l’architecture de chat
Créer la base Java client/serveur avec communication TCP, multithreading, gestion utilisateur et interface Swing.
Ajouter sécurité et stockage
Activer SSL/TLS, configurer keystore/truststore, valider les certificats et persister les messages dans MySQL.
Tester et documenter
Comparer captures en clair/chiffrées avec Wireshark, tester les certificats invalides, valider l’historique et produire la documentation finale.
Vue d’ensemble
Ce projet est une application de chat Java sécurisée construite avec une architecture client/serveur. Il combine réseau, sécurité, base de données et interface graphique dans un projet pratique.
L’objectif était de créer une application de messagerie réelle, puis de prouver que les mécanismes de sécurité avaient un effet observable. C’est pour cela que le projet inclut du code, une documentation technique, un guide utilisateur et un rapport de test.
Contexte
Le projet a été développé dans le cadre du BUT R&T S3 autour du développement sécurisé. L’application permet à plusieurs utilisateurs d’échanger des messages via un serveur, pendant que SSL/TLS protège les communications et que MySQL stocke les utilisateurs et messages.
Le point important : la sécurité a été testée, pas seulement décrite.
Ce que j’ai réalisé
Le projet inclut :
- un serveur de chat Java
- des clients Java avec interface graphique Swing
- une communication TCP client/serveur
- une gestion multithread des clients
- des sockets sécurisées SSL/TLS
- une configuration keystore / truststore
- un stockage MySQL des utilisateurs et messages
- une récupération de l’historique avec
/history - une validation Wireshark avec SSL désactivé puis activé
Architecture / approche
L’architecture est simple mais solide pour apprendre :
- le client ouvre une connexion vers le serveur
- le serveur gère plusieurs clients avec des threads dédiés
- SSL/TLS protège les échanges client/serveur
- les certificats sont validés avec la logique de truststore
- MySQL stocke les utilisateurs et messages horodatés
- l’interface client permet de discuter et récupérer l’historique
- Wireshark permet de vérifier ce qui est visible sur le réseau
C’est exactement le type de projet qui montre la différence entre “je connais le mot chiffrement” et “j’ai testé ce que le chiffrement change dans une capture réseau”.
Tests de sécurité
Le rapport de test couvre plusieurs scénarios utiles :
Base en clair
SSL/TLS a été désactivé pour observer le comportement de référence. Cela permet de montrer que les messages peuvent apparaître lisibles dans les captures réseau quand la communication n’est pas protégée.
Refus de certificat invalide
La connexion client/serveur a été testée avec un certificat invalide ou absent. Le comportement attendu et obtenu est un refus de connexion avec erreur de handshake SSL.
Validation du trafic chiffré
Avec SSL/TLS activé, les captures Wireshark ne montrent plus de contenu lisible des messages. Cela confirme l’effet concret du transport sécurisé.
Stockage et historique
Le stockage MySQL a été testé en envoyant des messages, en validant leur persistance en base, puis en récupérant les échanges avec la commande /history.
Preuves disponibles
Le projet fourni contient :
- code source
- documentation Java générée
- documentation technique
- guide utilisateur
- rapport de test
Avant une publication publique, il faut vérifier et nettoyer les fichiers de configuration pour ne pas exposer de chemins locaux, mots de passe, keystores, truststores ou valeurs propres à l’environnement de test.
Résultats
Ce projet démontre un mélange utile de compétences :
- développement Java client/serveur
- programmation avec sockets sécurisées
- logique de validation des certificats
- persistance en base de données
- interface graphique
- vérification avec Wireshark
- documentation structurée de tests
Limites et améliorations possibles
L’application est un projet d’apprentissage, pas une plateforme de messagerie de production. Les améliorations principales seraient :
- meilleure gestion des mots de passe
- configuration plus propre
- meilleure gestion d’erreurs dans l’interface
- dépôt public nettoyé
- gestion plus robuste du cycle de vie des certificats
- tests automatisés pour l’authentification et le stockage
Ce que ce projet démontre
Ce projet est fort parce qu’il relie la théorie sécurité à une preuve. Il montre que je peux implémenter une fonctionnalité, la tester, l’observer avec des outils et expliquer techniquement ce que le résultat signifie.