这是我的问题:我正在使用交易机器人与在线交易所进行交互。机器人实际上是PHP中的一个脚本,它具有无限循环。在每次迭代中,它使用cURL请求向/从服务器发送/接收一些数据。有时(不是经常)我得到错误443(未知的SSL协议)。这让我觉得问题的根源是远程服务器而不是我的请求。
我不是安全方面的专家,所以我欢迎一般的答案或链接,以便更深入。
答案 0 :(得分:0)
这通常意味着远程服务器未提供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
---