Python Webserver mit SSL/TL
Version vom 3. Juni 2026, 14:27 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ = Python Webserver mit SSL/TLS = In dieser Anleitung wird ein einfacher HTTPS-Webserver mit Python erstellt, der statische Inhalte aus einem Verzeichnis ausl…“)
Python Webserver mit SSL/TLS
In dieser Anleitung wird ein einfacher HTTPS-Webserver mit Python erstellt, der statische Inhalte aus einem Verzeichnis ausliefert.
Als erstes müssen wir die fullchain.pem und den privaten Schlüssl zu Server bringen
- scp fullchain.pem www.it213.int.key www:
Auf dem Webserver
- ssh kit@www
Verzeichnis erstellen
Zuerst wird ein Arbeitsverzeichnis für die Webinhalte und das Server-Skript angelegt.
- mkdir html
Keys anpassen
Die Zertifikatsdateien müssen in das Verzeichnis kopiert und für das Skript passend benannt werden.
- cp fullchain.pem html/own.crt
- cp www.it213.int.key html/own.key
Konfiguration
Das Python-Skript konfiguriert den Server so, dass er auf Port 8443 lauscht und die SSL-Verschlüsselung nutzt.
- nano html/https.py
import http.server, ssl
server_address = ('0.0.0.0', 8443)
handler = http.server.SimpleHTTPRequestHandler
httpd = http.server.HTTPServer(server_address, handler)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile="own.crt", keyfile="own.key")
httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
print("HTTPS läuft auf https://0.0.0.0:8443")
httpd.serve_forever()
Statische Seite erstellen
Damit der Server eine Seite anzeigt, wird eine index.html im Verzeichnis erstellt.
- nano html/index.html
<html> <head> <title>IT213 Testseite</title> </head> <body> <h1>Erfolg!</h1> <p>Der verschlüsselte Python-Webserver funktioniert und liefert diese Seite aus.</p> </body> </html>
Starten
Um den Server zu starten, wechselt man in das Verzeichnis und führt das Skript aus.
- cd html
- python3 https.py
Der Zugriff erfolgt im Browser über https://www.it213.int:8443.
Tests vom Client
- Verschlüsselter Verbindungsaufbau
- openssl s_client -host www.it213.int -port 8443
- Welche Zertifikate werden angeboten?
- nmap --script ssl-cert www.it213.int -p 8443
- Welche SSL/TLS Versionen werden angeboten
- nmap --script ssl-enum-ciphers www.it213.int -p 8443