
嗨,我在使用 openssl 连接时遇到问题。我有一个从 server1 连接到 server2 的 java 应用程序,我克隆了 server2 并将其从 Debian 9.7 升级到 Debian11。与 oldserver2 的连接正常工作:
$ openssl s_client -connect oldserver2:143
CONNECTED(00000003)
140273164910656:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:252:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 176 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1707916719
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
但连接到新的server2有问题:
$ openssl s_client -connect newserver2:143
140319971628352:error:0200206F:system library:connect:Connection refused:../crypto/bio/b_sock2.c:110:
140319971628352:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:111:
connect:errno=111
我在互联网上找不到任何相关信息。我很确定 srever2 上的 143 端口已打开
telnet 可以正常连接到 newserver2
$ telnet server2 143 另外,iptables 中也有条目,所以我认为端口 143 已打开
答案1
与 oldserver2 的连接正常:
事实并非如此。它显然会抛出错误,并且表明Cipher : 0000
TLS 握手失败。唯一成功的是 TCP 连接,而不是 TLS 握手。
140273164910656:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:252: ... Protocol : TLSv1.2 Cipher : 0000
由于您连接到端口 143,而该端口是为 IMAP 保留的,因此出现此错误是意料之中的事情。此端口上的流量预计以普通方式启动,然后使用显式 STARTTLS 命令升级到 TLS。这也可以通过添加-starttls imap
到 来完成openssl s_client
。
与另一台服务器相比,TCP 握手已经失败,因为连接被拒绝:
140319971628352:error:0200206F:system library:connect:Connection refused:../crypto/bio/b_sock2.c:110:
造成这种情况的原因可能有几个:服务器选择错误、服务器没有运行、服务器配置不正确、中间有防火墙……
telnet 可以正常连接到 newserver2
您对此答案的评论清楚地表明,telnet 到 newserver2 失败,与 openssl s_client 失败完全相同。因此,要么 IMAP 服务器未运行,要么未正确配置为使用端口 143,要么未配置为侦听外部地址,要么主机上存在某些防火墙规则,要么两者之间存在某些防火墙... 这里的选项太多,而且对您的配置和环境的了解太多。