Skip to content

RotkivDS/nh-python-tls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Entwicklung einer sicheren Client/Server-Anwendung mit Python und TLS

Dieses Projekt dient als Übung, um den Unterschied zwischen ungesicherter (TCP) und gesicherter (TLS) Client/Server-Kommunikation in Python zu demonstrieren.

1. Voraussetzungen

  • Python 3.x
  • OpenSSL: Notwendig, um die selbstsignierten Zertifikate für den TLS-Test zu erstellen. (Auf Linux/macOS standardmäßig installiert, unter Windows muss es ggf. nachinstalliert werden).

2. Projektstruktur

Stellen Sie sicher, dass alle folgenden Dateien im selben Ordner liegen:

TODO

3. Server-Zertifikate erstellen (Nur für TLS)

Bevor Sie die TLS-Skripte ausführen, benötigen Sie ein Server-Zertifikat (server.crt) und den zugehörigen privaten Schlüssel (server.key).

Führen Sie das mitgelieferte Bash-Skript aus:

chmod +x create_certs.sh  # Skript ausführbar machen (falls nötig)
./create_certs.sh

Das Skript erstellt:

  • server.key: Der private Schlüssel des Servers.
  • server.crt: Das selbstsignierte X.509-Zertifikat des Servers, gültig für "localhost".

4. Testen der ungesicherten Kommunikation (Ohne TLS)

Die Kommunikation erfolgt hier ohne Verschlüsselung oder Authentifizierung, direkt über reines TCP. Dies erfüllt die Anforderung 1 ("Daten vollständig übertragen") über Mechanismen wie Quittungen (ACKs) und Wiederholtes Senden (Retransmission).

Server starten (Terminal 1):

python server_no_tls.py

Client starten (Terminal 2):

python client_no_tls.py

Erwartetes Ergebnis: Die Nachricht wird zwischen Client und Server ausgetauscht.

5. Testen der gesicherten Kommunikation (Mit TLS)

Hier wird TLS auf der Transportschicht implementiert, um die Anforderung 2 ("Daten sicher übertragen") durch Verschlüsselung, Integritätsschutz und Authentifizierung zu gewährleisten.

Server starten (Terminal 1):

python server_tls.py

Client starten (Terminal 2):

python client_tls.py

Erwartetes Ergebnis:

Der Client stellt eine TCP-Verbindung her.

Der TLS-Handshake findet statt (unter Verwendung von server.crt und server.key).

Die Nachricht wird verschlüsselt ausgetauscht.

Wichtig: Der Client nutzt das server.crt, um dem Server zu vertrauen (da es selbstsigniert ist, wird es als temporäre Vertrauensquelle geladen: context.load_verify_locations("server.crt")).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published