【发布时间】:2014-10-15 13:49:15
【问题描述】:
这是我的问题:我正在使用交易机器人与在线交易所进行交互。该机器人实际上是 PHP 中的一个具有无限循环的脚本。在每次迭代中,它使用 cURL 请求向服务器发送/接收一些数据。有时(不是经常)我收到错误 443(未知的 SSL 协议)。这让我觉得问题的根源是远程服务器而不是我的请求。
我不是安全专家,所以我欢迎一般性的回答或链接以更深入地了解。
【问题讨论】:
这是我的问题:我正在使用交易机器人与在线交易所进行交互。该机器人实际上是 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
---
【讨论】: