So verschlüsseln Sie den Client-Server-Anwendungsdatenverkehr unter Windows mit Stunnel

Die erstmalige Einrichtung von Stunnel kann etwas knifflig sein, insbesondere wenn man sich mit SSL/TLS oder Zertifikaten nicht so gut auskennt. Es ist eines dieser leistungsstarken, aber auch etwas empfindlichen Tools – ein Tippfehler oder eine fehlende Datei, und es kommt entweder zu Verbindungsabbrüchen oder kryptischen Fehlermeldungen. Manchmal erfordert die Konfiguration etwas Ausprobieren, vor allem unter Windows, wo Berechtigungen und Firewalls unerwartete Probleme verursachen können. Sobald es aber funktioniert, bietet es eine zuverlässige Möglichkeit, ältere Anwendungen oder Dienste, die keine native Verschlüsselung unterstützen, abzusichern, ohne gleich ein komplettes VPN einsetzen zu müssen. Diese Anleitung führt Sie durch die Installation und Einrichtung eines einfachen Servers und Clients mit Zertifikatsauthentifizierung und TLS-Verschlüsselung, sodass Sie Ihren Datenverkehr unkompliziert absichern können.

So beheben Sie Probleme bei der Stunnel-Konfiguration und sorgen für einen reibungslosen Betrieb

Stunnel unter Windows verwenden: So bringen Sie die Serverseite zum Laufen

In diesem Abschnitt geht es um die Konfiguration von Stunnel als Server – die grundlegende Einrichtung, bei der eingehende verschlüsselte Verbindungen empfangen und intern weitergeleitet werden. Manchmal ist das etwas knifflig, da die Windows-Firewall oder die Zertifikatserstellung Probleme verursachen können, oder man vergisst einfach, die richtigen Dateien anzugeben. Wichtig ist, die Konfiguration korrekt vorzunehmen und den Port (z. B.443 für HTTPS) in der Windows-Firewall zu öffnen, denn Windows macht es einem natürlich unnötig schwer.

Laden Sie das Installationsprogramm herunter und wählen Sie bei der Ausführung die Standardoptionen. Dazu gehört die Installation opensslder Tools, die Sie zum Generieren aller Zertifikate benötigen.Öffnen Sie anschließend eine Eingabeaufforderung mit Administratorrechten und navigieren Sie zu `c:\Program Files (x86)\stunnel\bin`, da sich dort die OpenSSL-Binärdateien zum Erstellen von Schlüsseln und Zertifikaten befinden.

  • Generieren Sie den privaten CA-Schlüssel: openssl genpkey -algorithm RSA -out ca.key. Es ist kein Passwort erforderlich, da es sich lediglich um eine Root-CA handelt.
  • Erstellen Sie das CA-Zertifikat: openssl req -new -x509 -key ca.key -out ca.crt -subj "/O=woshubLTD/OU=IT/CN=CA_webserver1.com". Stellen Sie sicher, dass Ihre Betreffzeileninformationen ausreichend beschreibend sind, um diese Zertifizierungsstelle später zu identifizieren.
  • Generieren Sie den privaten Serverschlüssel: openssl genpkey -algorithm RSA -out server.key.
  • Erstellen Sie eine CSR für den Server: openssl req -key server.key -new -out server.csr.
  • Signieren Sie den CSR bei Ihrer Zertifizierungsstelle: openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -subj "/O=woshubLTD/OU=IT/CN=server_webserver1.com". Dieses Zertifikat kann nun für HTTPS innerhalb Ihres Tunnels verwendet werden.
  • Führen Sie ähnliche Schritte für ein Clientzertifikat durch: Generieren Sie einen Clientschlüssel ( openssl genpkey -algorithm RSA -out client.key), eine CSR und signieren Sie diese anschließend mit Ihrer Zertifizierungsstelle.

Kopieren Sie nun die Zertifizierungsstelle, die Serverzertifikate und die privaten Schlüssel nach `C:\Program Files (x86)\stunnel\config`. Zum Beispiel: ca.crt, server.crt, und server.key. Sie können einen kurzen Test durchführen, indem Sie die Datei stunnel.conf bearbeiten.

; Basic log info, helps with debugging debug = info output = stunnel.log ; Encryption stuff, tweak if needed options = CIPHER_SERVER_PREFERENCE options = NO_SSLv2 options = NO_SSLv3 options = NO_TLSv1 sslVersion = TLSv1.2 sslVersion = TLSv1.3 ciphers = ECDHE-RSA-AES256-GCM-SHA384 ; Paths to certs cert = server.crt key = server.key CAfile = ca.crt ; The actual tunnel service setup — replace IPs and ports as needed [ITPortal] accept = 192.168.158.144:443 connect = 127.0.0.1:80 verify=2 

Stellen Sie sicher, dass der Port (z. B.443) nicht anderweitig belegt ist.Öffnen Sie diesen Port anschließend in der Windows Defender Firewall. Dies können Sie mit einem PowerShell-Befehl wie dem folgenden tun:

New-NetFirewallRule -DisplayName "ITPortal_stunnel_443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow

Das ist quasi unerlässlich; andernfalls werden die Verbindungen einfach blockiert.

Starten Sie die Stunnel-GUI einmal in Ihrer Konfiguration, um auf Fehler zu prüfen – wenn alles in Ordnung ist, schließen Sie sie, öffnen Sie eine Eingabeaufforderung als Administrator und installieren Sie Stunnel als Dienst:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install "C:\Program Files (x86)\stunnel\config\stunnel.conf"

Dann starten Sie es mit:

Start-Service wrapper

Dadurch läuft Ihr TLS-Wrapper im Hintergrund und lauscht auf Port 443. Ganz einfach, oder? Nun ja, fast – falls Fehler auftreten oder die Verbindung nicht hergestellt werden kann, überprüfen Sie die Protokolldatei stunnel.log. Manchmal handelt es sich um einen Tippfehler, eine fehlende Datei oder ein Firewall-Problem.

Angleichung der Client-Seite an den Server

Die Client-Einrichtung ist ähnlich, aber größtenteils weniger aufwendig. Installieren Sie Stunnel, kopieren Sie das CA-Zertifikat ( https://github.com/memstechtips/Winhance ) und die Client-Zertifikate nach `C:\Program Files (x86)\stunnel\config`. Passen Sie anschließend die Konfiguration an:

[ITPortal] client = yes accept = localhost:8080 connect = 192.168.158.144:443 CAfile = ca.crt cert = client.crt key = client.key verify=2 

Führen Sie Stunnel auf dem Client aus. Wenn Sie dann in Ihrem Browser die Adresse aufrufen localhost:8080, werden Sie sicher zum Remote-Server weitergeleitet. Bei Bedarf können Sie das Client-Zertifikat und den Schlüssel auch in einer PEM-Datei bündeln (z. B.mit `stunnel.csv` Get-Content client.key, client.crt | Set-Content client.pem) und anschließend einfach auf die Adresse verweisen cert = client.pem. Beachten Sie jedoch, dass für den späteren Betrieb als Dienst dieselben Zertifikate verfügbar sein und die Berechtigungen korrekt gesetzt werden müssen.

Zum Schluss noch ein Hinweis: Falls Sie ein kompromittiertes Zertifikat widerrufen müssen, fügen Sie die Option `CRLpath` hinzu, die auf den Ordner mit Ihren Zertifikatssperrlisten verweist. Für fortgeschrittenere Konfigurationen finden Sie in diesem GitHub-Repository Automatisierungstipps und weitere Konfigurationsdetails.

Und das war’s auch schon. Es ist zwar etwas knifflig, alles richtig einzurichten, aber sobald es läuft, kann Stunnel ein Lebensretter sein, wenn es darum geht, ältere Dienste zu verschlüsseln oder schnell sichere Tunnel zu erstellen, ohne sich mit kompletten VPNs herumschlagen zu müssen.

Zusammenfassung

  • Alle Zertifikate und Schlüssel wurden mit OpenSSL generiert, keine großen Überraschungen also.
  • Die Datei stunnel.conf wurde sorgfältig konfiguriert, wobei auf Pfade und Ports geachtet wurde.
  • Richten Sie eingehende Firewall-Regeln ein, damit nichts Ihren Tunnel blockiert.
  • Ich habe den Dienst gestartet und die Protokolle auf Fehler überprüft – dort findet man normalerweise die Fehlkonfigurationen.
  • Getestet mit einem Browser oder curl und sichergestellt, dass der Datenverkehr während der Übertragung verschlüsselt war.

Zusammenfassung

Stunnel ohne Probleme zum Laufen zu bringen, erfordert etwas Geduld, aber sobald es läuft, bietet es eine solide Lösung zur Verschlüsselung des Datenverkehrs auf älteren Servern oder Anwendungen, die moderne TLS-Standards nicht unterstützen. Wichtig ist, die Zertifikatskette korrekt zu halten und die Firewall-Regeln sorgfältig zu überprüfen. Bei Fehlern sind die Protokolle meist die beste Anlaufstelle – und manchmal ist ein Neustart des Dienstes nach Änderungen erforderlich. Hoffentlich spart dies dem einen oder anderen ein paar Stunden Zeit oder verhindert zumindest Panik, wenn es beim ersten Versuch nicht klappt.