设置隧道服务器的错误:“ SSL3_GET_CLIENT_HELLO:版本号错误”


9

我正在stunnelWindows XP上设置服务器,当客户端尝试访问时出现此错误:

2013.02.14 00:02:16 LOG7[8848:7664]: Service [https] accepted (FD=320) from 107.20.36.147:56160
2013.02.14 00:02:16 LOG7[8848:7664]: Creating a new thread
2013.02.14 00:02:16 LOG7[8848:7664]: New thread created
2013.02.14 00:02:16 LOG7[8848:9792]: Service [https] started
2013.02.14 00:02:16 LOG5[8848:9792]: Service [https] accepted connection from 107.20.36.147:56160
2013.02.14 00:02:16 LOG7[8848:9792]: SSL state (accept): before/accept initialization
2013.02.14 00:02:16 LOG7[8848:9792]: SSL alert (write): fatal: handshake failure
2013.02.14 00:02:16 LOG3[8848:9792]: SSL_accept: 1408A10B: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
2013.02.14 00:02:16 LOG5[8848:9792]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2013.02.14 00:02:16 LOG7[8848:9792]: Local socket (FD=320) closed
2013.02.14 00:02:16 LOG7[8848:9792]: Service [https] finished (0 left)

知道该怎么办吗?我在网上阅读到这可能意味着我的服务器正在宣传它可以使用SSL3进行通信,但实际上却不能。如果是这样,我想知道如何解决此问题。我正在编辑stunnel.conf文件,但不知道要对其进行更改以解决此问题。

更新:

以上错误消息仅在Twilio客户端(即Twilio的服务器)尝试访问我的服务器时显示。当我尝试使用其中一台计算机访问服务器时,页面确实会显示,但显示内容后,Chrome会将页面显示为“正在加载”约30秒钟,最后显示stunnel以下消息:

transfer: s_poll_wait: TIMEOUTclose exceeded: closing

更新:

这是Wireshark捕获:https : //gist.github.com/cool-RR/4963477

上限文件:https : //dl.dropbox.com/u/1927707/wireshark.cap

请注意,服务器在端口8088上运行。

更新:

这是来自服务器的日志(带有debug = 7):

2013.02.17 17:06:52 LOG7[7636:2092]: No limit detected for the number of clients
2013.02.17 17:06:52 LOG5[7636:2092]: stunnel 4.54 on x86-pc-msvc-1500 platform
2013.02.17 17:06:52 LOG5[7636:2092]: Compiled/running with OpenSSL 1.0.1c-fips 10 May 2012
2013.02.17 17:06:52 LOG5[7636:2092]: Threading:WIN32 SSL:+ENGINE+OCSP+FIPS Auth:none Sockets:SELECT+IPv6
2013.02.17 17:06:52 LOG5[7636:2092]: Reading configuration from file stunnel.conf
2013.02.17 17:06:52 LOG5[7636:2092]: FIPS mode is enabled
2013.02.17 17:06:52 LOG7[7636:2092]: Compression not enabled
2013.02.17 17:06:52 LOG7[7636:2092]: Snagged 64 random bytes from C:\Documents and Settings\User/.rnd
2013.02.17 17:06:52 LOG7[7636:2092]: Wrote 1024 new random bytes to C:\Documents and Settings\User/.rnd
2013.02.17 17:06:52 LOG7[7636:2092]: PRNG seeded successfully
2013.02.17 17:06:52 LOG6[7636:2092]: Initializing service [https]
2013.02.17 17:06:52 LOG7[7636:2092]: Certificate: G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Certificate loaded
2013.02.17 17:06:52 LOG7[7636:2092]: Key file: G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Private key loaded
2013.02.17 17:06:52 LOG7[7636:2092]: Could not load DH parameters from G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Using hardcoded DH parameters
2013.02.17 17:06:52 LOG7[7636:2092]: DH initialized with 2048-bit key
2013.02.17 17:06:52 LOG7[7636:2092]: ECDH initialized with curve prime256v1
2013.02.17 17:06:52 LOG7[7636:2092]: SSL options set: 0x03000004
2013.02.17 17:06:52 LOG5[7636:2092]: Configuration successful
2013.02.17 17:06:52 LOG7[7636:2092]: Service [https] (FD=268) bound to 0.0.0.0:8088
2013.02.17 17:07:08 LOG7[7636:2092]: Service [https] accepted (FD=320) from 54.242.25.199:45922
2013.02.17 17:07:08 LOG7[7636:2092]: Creating a new thread
2013.02.17 17:07:08 LOG7[7636:2092]: New thread created
2013.02.17 17:07:08 LOG7[7636:8004]: Service [https] started
2013.02.17 17:07:08 LOG5[7636:8004]: Service [https] accepted connection from 54.242.25.199:45922
2013.02.17 17:07:08 LOG7[7636:8004]: SSL state (accept): before/accept initialization
2013.02.17 17:07:08 LOG7[7636:8004]: SSL alert (write): fatal: handshake failure
2013.02.17 17:07:08 LOG3[7636:8004]: SSL_accept: 1408A10B: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
2013.02.17 17:07:08 LOG5[7636:8004]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2013.02.17 17:07:08 LOG7[7636:8004]: Local socket (FD=320) closed
2013.02.17 17:07:08 LOG7[7636:8004]: Service [https] finished (0 left)

更新:

这是我的stunnel.conf档案。


收件箱文件似乎丢失。服务器返回HTTP / 404
Mircea Vutcovici

@MirceaVutcovici对不起,现在已修复。
Ram Rachum

我将对这个问题的赏金提高到100分。
Ram Rachum 2013年

1
您能否也包括stunnel.conf文件?因为看起来您的服务器正在拒绝SSLv3.0连接
Stephane

现在包括它
Ram Rachum

Answers:


3

您应该进行网络捕获,并查看其被拒绝的原因。还要检查两个端点上的日志。增加debug通道配置中的级别。

您需要进行网络跟踪以找​​出客户端支持的SSL协议版本。然后,确保您的服务器也支持该版本。

客户端发送ClientHello消息,指定它支持的最高TLS协议版本,随机数,建议的CipherSuite列表和建议的压缩方法。

资源

请注意,由于重新协商中存在安全漏洞,SSL协议几年前已更改。请参阅CVE-2009-3555和有关SSL重新协商的本页

服务器响应:

Secure Sockets Layer
    SSLv3 Record Layer: Alert (Level: Fatal, Description: Handshake Failure)
        Content Type: Alert (21)
        Version: SSL 3.0 (0x0300)
        Length: 2
        Alert Message
            Level: Fatal (2)
            Description: Handshake Failure (40)

您必须检查SSL服务器上的日志,以查看其为何拒绝连接。尝试使用以下命令在stunnel上启用SSL调试debug=7

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


我已用更多详细信息更新了该问题。您还需要我进行网络捕获吗?
Ram Rachum

是的,要知道SSL客户端支持哪个版本。
Mircea Vutcovici

我已经完成了Wireshark的捕获并将其链接到问题中。
Ram Rachum

1
好的,问题是您启用了FIPS模式(默认情况下在使用FIPS编译的通道中启用了FIPS模式),并且客户端正在尝试使用SSLv3进行连接(我想必须从日志或网络捕获中进行确认)。但是FIPS仅适用于TLSv1或更高版本。
Mircea Vutcovici

1
您有2个解决方案:1.升级SSL客户端(Twilio)。2.通过添加fips = no到stunnel.conf 禁用FIPS合规性并降低安全性
Mircea Vutcovici 2013年

0

客户端和服务器之间的SSL版本可能不匹配。通过在客户端上禁用较早的SSL版本,确保仅将客户端配置为使用SSL3。


我不知道该怎么做。
Ram Rachum 2013年
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.