openssl errno 104 是否意味着 SSLv2 被禁用?

Dav*_*vid 16 ssl openssl

我想检查我的服务器是否禁用了 SSLv2。我通过尝试使用以下 shell 命令与 openssl 远程连接来做到这一点。

openssl s_client -connect HOSTNAME:443 -ssl2
Run Code Online (Sandbox Code Playgroud)

我可以在 Internet 上找到的大多数文献都说,如果我看到类似于以下错误的内容,则 SSLv2 已正确禁用。

29638:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:428:
Run Code Online (Sandbox Code Playgroud)

在 Apache Apache 中禁用 SSLv2 的情况下连接到我的 Ubuntu 服务器时,我确实收到上述错误,但是当我在注册表中禁用 SSLv2 的情况下连接到我的 Windows Server 2008 R2 服务器时,我收到以下输出和错误。

CONNECTED(00000003)
write:errno=104
Run Code Online (Sandbox Code Playgroud)

我找不到任何解释此输出和错误的文献。如果有人可以向我解释此输出和错误是否以及为什么意味着 SSLv2 已被正确禁用,我将不胜感激。

谢谢!

use*_*686 15

至少在 Linux 上,104ECONNRESET用于“对等方重置连接”——换句话说,连接被一个 TCP RST 数据包强行关闭,要么是由服务器发送的,要么是被中介欺骗的。

我会在 Ubuntu 服务器上尝试 Wireshark/tshark 以查看实际发送的内容。如果 RST 是真实的,则可能是 httpd 进程死了 - 检查日志文件,dmesg以防万一。


Qualys公司SSL服务器测试网站可以显示由Web服务器支持的所有SSL / TLS版本。(不幸的是,它甚至不理会 TLS SNI ......)