Richten Sie Stunnel ein, um SSL für eine einzelne Anwendung zu verpacken

Richten Sie Stunnel ein, um SSL für eine einzelne Anwendung zu verpacken

Ich versuche zu verwendenTunnelum einen älteren Usenet-Client dazu zu bringen, SSL zu unterstützen. Ich habe die folgende Konfiguration ausprobiert:

[myservice]
accept = <LOCAL_PORT>
connect = <REMOTE_HOST>:<REMOTE_PORT>

aber stunnel schlug immer wieder mit dem folgenden Fehler fehl:

Section myservice: SSL server needs a certificate

Was mache ich falsch?

Antwort1

client = yesIm [myservice]Abschnitt festlegen . Dies teilt stunnel mit, dass die connect(auch als „Server“ bezeichnete) Seite SSL-basiert ist und die accept(auch als „Client“ bezeichnete) Seite normal ist. Die Standardeinstellung ist das Gegenteil, was ein SSL-Zertifikat erfordert.

Aber das ist noch nicht alles! Aus irgendeinem verrückten Grund ist stunnel standardmäßig in einem völlig unsicheren Modus, in dem die Zertifikate des Servers nicht überprüft werden, was bedeutet, dass Sie Man-in-the-Middle-Angriffen (MitM) ausgesetzt wären! Um dies zu beheben, verwenden Sie die Optionen verify = 2und CAfile. Unter Ubuntu CAfilefinden Sie sie unter /etc/ssl/certs/ca-certificates.crt(aus dem ca-certificatesPaket). Wenn Sie schon dabei sind, options = NO_SSLv2deaktivieren Sie auch das unsichere SSLv2-Protokoll.

Deaktivieren Sie abschließend SSL, wenn Sie Ihr Usenet-Programm konfigurieren, da die Verbindung zwischen der Anwendung und Stunnel KEIN SSL verwendet.

Ich habe das folgende Wrapper-Skript geschrieben, um dabei zu helfen. Ersetzen Sie <LOCAL_PORT>, <REMOTE_HOST>, und <REMOTE_PORT>nach Bedarf und # ...durch den Befehl, den Sie ausführen möchten.

#!/bin/bash
PIDFILE=/tmp/stunnel-agent.pid

# Start stunnel in the background.
cat << EOF | stunnel4 -fd 0
pid = $PIDFILE

# Enable proper SSL security.  Without this, you are completely insecure!
verify = 2
CAfile = /etc/ssl/certs/ca-certificates.crt
options = NO_SSLv2

[myservice]
client = yes
accept = <LOCAL_PORT>
connect = <REMOTE_HOST>:<REMOTE_PORT>
EOF

# Start whatever program you want.
# ...

# Kill stunnel.
kill $(cat "$PIDFILE")

verwandte Informationen