SSL-proxy mit stunnel

Ich versuche, eine SSL-Verbindung mit stunnel. Eine Art SSL-Proxy.

Endziel
Verbinden Sie nur http CLIENT mit https only SERVER.

Mein Plan ist

  1. CLIENT: Endpunkt in PROXY ändern
  2. PROXY: Verwenden Sie Stunnel, um Anfragen vom CLIENT zu empfangen und an den SERVER weiterzuleiten

Stunnel.conf

cert = /etc/stunnel/stunnel.pem
foreground = yes
chroot = /var/run/stunnel
setuid = stunnel
setgid = stunnel
pid = /stunnel.pid
debug = 7
[my_route]
accept = 7121
connect = SERVER:443
;connect = SERVER:443/somedata

Test 1

$openssl s_client -connect SERVER:443
New, TLSv1/SSLv3, Server public key is 2048 bit

Test 2

openssl s_client -connect PROXY:7121
New, TLSv1/SSLv3, Server public key is 2048 bit

Ergebnis (Verbindung vom CLIENT zum SERVER über PROXY).

Service [my_route] accepted (FD=3) from 10.0.2.2:12345
Service [my_route] started
Service [my_route] accepted connection from 10.0.2.2:12345
SSL state (accept): before/accept initialization
SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
Local socket (FD=3) closed
Service [my_route] finished (0 left)

Fragen

  1. Warum stimmt die IP nicht mit dem SERVER überein? Warum ist es connectiong zu 10.0.2.2?
    Bedeutet das, dass ich eine Verbindung zu einem falschen Server herstelle? Wie kann das passieren?

  2. Was sagt dieser Fehler aus? Remote-server verwendet eine andere version von SSL, nicht wahr?

Author: bwDraco, 2012-12-29

3 answers

  1. Warum stimmt die IP nicht mit dem SERVER überein? Warum ist es connectiong zu 10.0.2.2?

Weil diese IP-Adresse nicht die Adresse des Servers ist, mit dem sie eine Verbindung herstellt, sondern die Adresse des Clients, von dem sie empfängt (openssl s_client ausführen).

Bedeutet das, dass ich eine Verbindung zu einem falschen Server herstelle? Wie kann das geschehen?

Nein, es hat nichts mit dem Server zu tun.

  1. Was sagt dieser Fehler? Remote-server verwendet eine andere version von SSL, nicht wahr?

Dies bedeutet, dass Ihr Stunnel versucht, SSL mit dem Client (openssl s_client) zu sprechen, der eine Verbindung herstellt. Sie scheinen sich nicht auf die zu verwendende SSL-Protokollversion zu einigen.

Dies ist jedoch eindeutig falsch. In der Konfiguration, die Sie einrichten möchten, sollte Stunnel auf HTTP-Verbindungen warten und diese Verbindung mit HTTPS an den SERVER tunneln. Daher dürfen Sie openssl s_client nicht verwenden, um eine Verbindung zu Ihrem stunnel als openssl s_client würde SSL verwenden und stunnel würde auf Nicht-SSL-Verbindungen warten.

Um dies zu lösen, benötigen Sie eine zusätzliche Zeile client = yes in Ihrer Konfiguration. Anstatt openssl s_client als Client für Ihren Stunnel zu verwenden, sollten Sie entweder telnet (telnet server2 7121) oder ein Programm verwenden, das HTTP mit Ihrem Server sprechen kann (wie ein Webbrowser oder ähnliches, wobei eine URL wie http://PROXY:7121/...).

Außerdem wird dringend empfohlen, IP-Adressen in Ihrer Konfigurationsdatei zu verwenden (anstelle von textuellen Hostnamen).

So etwas sollte für dich funktionieren:

[my_route]
client = yes
accept = 7121
connect = aaa.bbb.ccc.ddd:443
 1
Author: Laszlo Valko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-11-03 03:58:06

Scheint genau dieses Problem zu lösen in dieser Antwort auf Server Fault; Der fett gedruckte Teil scheint Ihrem Szenario ähnlich zu sein:

Der stunnel Server hat options = NO_SSLv3, aber der Client ist versuch, eine Verbindung mit SSLv3 herzustellen. Sie müssen den Client aktualisieren auf unterstützen Sie eine neuere Version von SSL oder Sie müssen den Stunnel ändern konfiguration, um SSLv3 zu akzeptieren.

 1
Author: Giacomo1968,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-13 12:14:41

Wenn Sie dies zur Konfigurationsdatei hinzufügen, reicht dies aus .

sslversion = all

Und Sie könnten eine andere Sache verpasst haben . sie sollten explizit "client = yes" setzen oder standardmäßig "no" .

 -1
Author: 把友情留在无盐,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-01-23 15:14:35