我想检查我的服务器是否禁用了 SSLv2。我尝试使用以下 shell 命令远程连接 openssl。
openssl s_client -connect HOSTNAME:443 -ssl2
我在互联网上找到的大多数文献都说,如果我看到类似以下错误,则 SSLv2 已被正确禁用。
29638:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:428:
当我连接到在 Apache Apache 中禁用 SSLv2 的 Ubuntu 服务器时,确实出现了上述错误,但当我连接到在注册表中禁用 SSLv2 的 Windows Server 2008 R2 服务器时,出现了以下输出和错误。
CONNECTED(00000003)
write:errno=104
我找不到任何解释此输出和错误的文献。如果有人能向我解释此输出和错误是否以及为什么意味着 SSLv2 已正确禁用,我将不胜感激。
谢谢!
答案1
至少在 Linux 上,104 表示ECONNRESET
“对端重置连接”– 换句话说,连接被 TCP RST 数据包强制关闭,该数据包要么由服务器发出,要么由中介欺骗。
我会在 Ubuntu 服务器上尝试 Wireshark/tshark,看看实际发送了什么。如果 RST 是真实的,则可能是 httpd 进程已终止 - 检查日志文件,dmesg
以防万一。
这Qualys SSL 服务器测试网站可以显示您的网络服务器支持的所有 SSL/TLS 版本。(不幸的是,它甚至不关心 TLS SNI......)
答案2
您的服务器支持的密码和收件人服务器支持的密码可能不匹配。
答案3
我遇到了同样的错误,它与接口 MTU 有关。将客户端接口 MTU 设置为 1492(原先是 1500),解决了这个错误。