带有stunnel的SSL代理


4

我正在尝试使用stunnel设置SSL连接。某种SSL代理。

最终目标
将仅http CLI连接到仅https SERVER

我的计划是

  1. 客户端:将端点更改为PROXY
  2. PROXY:使用stunnel接收来自CLIENT的请求并将它们转发给SERVER

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

测试1

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

测试2

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

结果(通过PROXY从CLIENT连接到SERVER)。

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)

问题

  1. 为什么IP与SERVER不匹配?为什么连接到10.0.2.2?
    这是否意味着我正在连接错误的服务器?怎么会发生这种情况?

  2. 这个错误说的是什么?那个远程服务器使用另一个版本的SSL,不是吗?


你是什​​么意思“仅使用ssl,仅使用https”
nixda

我的意思是它不支持http。它仅支持https。
伊利亚

啊,当然,我的错。在我的第一次编辑
nixda

Answers:


0
  1. 为什么IP与SERVER不匹配?为什么连接到10.0.2.2?

因为该IP地址不是它所连接的服务器的地址,而是它接收的客户机的地址(运行openssl s_client)。

这是否意味着我正在连接错误的服务器?怎么会发生这种情况?

不,它与服务器无关。

  1. 这个错误说的是什么?那个远程服务器使用另一个版本的SSL,不是吗?

这意味着您的stunnel会尝试向客户端(openssl s_client)连接说SSL。他们似乎不同意要使用的SSL协议版本。

但是,这是完全错误的。在要设置的配置中,stunnel应等待HTTP连接,并将这些连接与HTTPS隧道连接到SERVER。因此,您可能无法使用openssl s_client连接到您的stunnel,因为openssl s_client将使用SSL并且stunnel将等待非SSL连接。

要解决此问题,您需要client = yes在配置中添加一行。然后,不应使用openssl s_client作为stunnel的客户端,而应使用telnet(telnet server2 7121)或能够向服务器说HTTP的程序(如Web浏览器或类似的URL,其URL开头http://PROXY:7121/...)。

此外,强烈建议在配置文件中使用IP地址(而不是文本主机名)。

这样的事情对你有用:

[my_route]
client = yes
accept = 7121
connect = aaa.bbb.ccc.ddd:443

0

似乎这个确切的问题在服务器故障的答案中得到解决; 粗体部分似乎适合您的场景:

stunnel服务器options = NO_SSLv3,但客户端尝试使用SSLv3的连接。您需要升级客户端以支持更新版本的SSL,或者您需要更改stunnel配置以接受SSLv3。


-1

将其添加到配置文件中即可。

sslversion = all

而你可能错过了另一件事。你应该明确设置“client = yes”或默认为“no”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.