【问题标题】:Unable to establish the SSL connection to the Ubuntu Linux Machine无法建立到 Ubuntu Linux 机器的 SSL 连接
【发布时间】:2018-07-04 11:05:59
【问题描述】:

已尝试从 STB 客户端设备与 Linux 服务器计算机建立 SSL 连接。收到以下 SSL 错误,

error:1408F10B:lib(20):func(143):reason(267) (find reason(code) at openssl/ssl.h) 

在使用 openssl 命令检查时,我得到以下信息,

CONNECTED(00000003)
write to 0x7ee98 [0x8a153] (148 bytes => 148 (0x94))
0000 - 16 03 00 00 8f 01 00 00-8b 03 00 50 40 64 2c 41   ...........P@d,A
0010 - 53 23 c1 e1 9a dd e3 40-61 b3 71 cb 38 fe ba c9   S#.....@a.q.8...
0020 - 6b d7 b4 00 0d 21 88 19-6a 7c 56 00 00 64 c0 14   k....!..j|V..d..
0030 - c0 0a 00 39 00 38 00 37-00 36 00 88 00 87 00 86   ...9.8.7.6......
0040 - 00 85 c0 0f c0 05 00 35-00 84 c0 13 c0 09 00 33   .......5.......3
0050 - 00 32 00 31 00 30 00 9a-00 99 00 98 00 97 00 45   .2.1.0.........E
0060 - 00 44 00 43 00 42 c0 0e-c0 04 00 2f 00 96 00 41   .D.C.B...../...A
0070 - 00 07 c0 11 c0 07 c0 0c-c0 02 00 05 00 04 c0 12   ................
0080 - c0 08 00 16 00 13 00 10-00 0d c0 0d c0 03 00 0a   ................
0090 - 00 ff 01                                          ...
0094 - <SPACES/NULS>
read from 0x7ee98 [0x85c03] (5 bytes => 5 (0x5))
0000 - 48 54 54 50 2f                                    HTTP/
write to 0x7ee98 [0x8f610] (7 bytes => 7 (0x7))
0000 - 15 03 00 00 02 02 28                              ......(
3069535440:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version    number:s3_pkt.c:362:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 7 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
   Protocol  : SSLv3
Cipher    : 0000
Session-ID: 
Session-ID-ctx: 
Master-Key: 
Key-Arg   : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1516869657
Timeout   : 7200 (sec)
Verify return code: 0 (ok)

得到的确切错误是 3069535440:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:362:。

请有人帮忙解决这个问题?

【问题讨论】:

  • 错误端口。 你从 Q 中省略了,但在下面的评论中说,你连接到端口 8080。8080 通常是 HTTP 而不是 HTTPS,你可以从在此服务器上为 true 的跟踪。尝试连接到 HTTPS 的端口;这可能会因您无法识别但可能是 8443 的服务器而异。但是您的 openssl 实际上正在请求 SSLv3,并且许多现代实现不再允许这样做,因为它已损坏;服务器到底是什么?
  • Server 是一台运行 Ubuntu 14.04 的 Linux 机器。我正在尝试从客户端机顶盒设备连接这台机器。对这台机器的 SSL 尝试使用的 ip 和端口是 8080。
  • Ubuntu 是一个操作系统,而不是一个网络服务器;有成千上万的网络服务器可以在 Ubuntu 上运行——前提是你需要 HTTPS 而不是其他一些 SSL/TLS 协议;你确定吗?如果您确实想要 8080 上的 HTTPS,则需要关闭当前在 8080 上执行 HTTP 的任何东西,并打开在 8080 上执行 HTTPS 的东西(可能同样的东西被修改为执行 HTTPS 而不是 HTTP)。
  • @dave_thompson_085 是的。从客户端设备,我尝试连接到监听端口 8080 的 http 服务器。如果做错了,请帮助我纠正我的问题。非常感谢。
  • 如果设备正在尝试将 SSL/TLS 连接到端口 8080,这是非常不寻常的,但似乎由其错误消息指示,并且您在端口 8080 上有一个 HTTP 服务器,那么是的,您是做错事。 SSL/TLS 和 HTTP 是不同的。 鉴于您所说,对于某些基于 SSL/TLS 的协议,您需要一个端口 8080 上的服务器——可能是 HTTPS(注意 S;HTTPS 与HTTP,尽管许多网络服务器都可以做到)。至少如果您有合适的证书和密钥,您可以使用openssl s_server -accept 8080 ...,如果设备握手正常,请查看它发送的内容。

标签: linux ssl openssl tls1.2 sslv3


【解决方案1】:

正如您在提供的错误信息中看到的,有一个routines:SSL3_GET_RECORD:wrong version error。在我看来,尽管服务器和/或客户端不支持此 SSL 版本,但您尝试使用 SSL3。 尝试更改使用的方法,然后重试。

编辑:由于协议 SSLv3 为 0 的验证返回码,因此支持该协议。

【讨论】:

  • 在客户端和服务器中,都可以看到支持 SSLv3 和 TLSv1.2 协议。但是我无法从客户端连接到服务器,这里我试图连接到端口 8080 并且在这两种情况下都遇到了上述错误。
  • 是的,刚刚看到,验证返回 0,所以应该支持 SSLv3。您连接的服务器使用哪种证书?
  • 不确定我在这里使用的证书。我们是否需要将来自服务器机器的证书存储在客户端,如果需要,我们如何获取服务器端证书。
  • 您应该检查您是否使用自签名证书以及该证书是否有效。您可以尝试使用 Lets-Encrypt 生成经过验证的免费证书,以便您的服务器检查验证是否存在问题。
  • @VysakhAV 不,您不需要将服务器证书存储在客户端计算机上。也许问题是,STB 正在尝试验证证书,但由于它是自签名的,它无法验证 CA 并关闭连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2016-08-12
  • 2015-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多