什么是“未知SSL协议错误”?的意思


What does "Unknown SSL protocol error" mean?

我的问题是:我正在使用交易机器人与在线交易所进行交互。bot实际上是一个PHP脚本,它有一个无限循环。在每次迭代中,它使用cURL请求向服务器发送/接收一些数据。有时(不是经常)我得到错误443(未知SSL协议)。这使我认为问题的根源是远程服务器而不是我的请求。

我不是安全方面的专家,所以我希望大家能给出一般的答案或链接,以便深入了解。

这通常意味着远程服务器没有提供SSL/TLS响应。相反,删除服务器发送了一个网页作为对ClientHello的响应,本地客户端试图将HTML解释为ServerHello

可以用openssl s_client -connect www.google.com:80进行模拟。在本例中,端口80显然将为您提供一个网页,而不是一个ServerHello。感兴趣的行是以read from ...开头的行。

$ openssl s_client -connect www.google.com:80 -debug
CONNECTED(00000003)
write to 0x7fe933c22a70 [0x7fe934013600] (308 bytes => 308 (0x134))
0000 - 16 03 01 01 2f 01 00 01-2b 03 03 2e 0b 3b 5f 7a   ..../...+....;_z
...
0120 - 02 04 03 03 01 03 02 03-03 02 01 02 02 02 03 00   ................
0130 - 0f 00 01 01                                       ....
read from 0x7fe933c22a70 [0x7fe934018c00] (7 bytes => 7 (0x7))
0000 - 48 54 54 50 2f 31 2e                              HTTP/1.
140735324471772:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:787
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 308 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---