A secure and scalable multi-user chat application built using Go, featuring private, public, and group messaging functionalities. The app uses TLS encryption to secure communication between clients and server.
- Private Messaging: Send direct messages to a specific user.
- Public Messaging: Broadcast messages to all connected users.
- Group Messaging: Create groups and chat within them.
- TLS Encryption: Secure all communication using SSL/TLS certificates and keys generated via OpenSSL.
- Language: Go (Golang)
- Security: TLS/SSL (OpenSSL Certificates)
- Networking: TCP Protocol
- Download and install Go from https://golang.org/dl/.
- Verify the installation:
go version
-
Install OpenSSL:
- Windows: Download OpenSSL
- Linux (Ubuntu):
sudo apt update sudo apt install openssl
- MacOS:
brew install openssl
-
Generate TLS Certificate and Private Key:
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes
server.key→ Private Keyserver.crt→ Public Certificate
-
Place
server.crtandserver.keyinside your project folder.
git clone https://github.com/msaakaash/multiuser-chat-app.git
cd multiuser-chat-appgo run server.gogo run client.goYou can run multiple clients to simulate multiple users chatting.
Please read our Code of Conduct before contributing to this project.
We welcome contributions from everyone!
- Fork this repository.
- Create a new branch:
git checkout -b feature/your-feature-name
- Commit your changes:
git commit -m "Add your message" - Push the changes:
git push origin feature/your-feature-name
- Open a Pull Request.
- Ensure the server is running before clients attempt to connect.
- The communication between client and server is fully encrypted with TLS.
- Groups can be created dynamically and members can join iteratively.
Please read our Code of Conduct before contributing to this project.
If you discover a vulnerability, please refer to our Security Policy for instructions on how to report it responsibly.
This project is licensed under the MIT License.