A fully encrypted, multi-threaded chat server and client built in Python using:
- 🧵 Threading
- 🔐 SSL/TLS (Mutual Authentication)
- 🗃️ MySQL backend for authentication
- 🔑 bcrypt for password hashing
- 🌱
.envconfiguration support - 🔁 Support for real-time private/group messaging
- Python 3.10+
- MySQL or MariaDB
- pip install -r requirements.txt (manual install below)
pip install mysql-connector-python bcrypt python-dotenv
Generate CA with proper extensions:
openssl req -x509 -new -nodes -keyout ca.key -out ca.crt
-days 3650 -config ca_config.cnf
openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key
-CAcreateserial -out server.crt -days 825 -sha256
openssl req -newkey rsa:2048 -nodes -keyout client.key -out client.csr
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key
-CAcreateserial -out client.crt -days 825 -sha256
DB_HOST=localhost DB_PORT=3306 DB_USER=username DB_PASS=password DB_NAME=chat_server_db
SSL_CERT_PATH=certs/server.crt SSL_KEY_PATH=certs/server.key SSL_CA_PATH=certs/ca.crt
CREATE DATABASE chat_server_db;
USE chat_server_db;
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL );
Multi-threaded client handling bcrypt password hashing Encrypted SSL/TLS connections Mutual TLS authentication (client/server both validated) Real-time group messaging Registration/Login system using MySQL
Praveen M B.Tech CSBS | Cybersecurity & Dev Enthusiast | Panimalar Engineering College