使用OpenSSL 0.9.8针对OpenSSL 1.0.0服务器运行curl会导致握手错误?

rog*_*ler 10 curl openssl handshake

如果我对运行OpenSSL 1.0.0e的机器运行curl,例如:

curl -v https://shumaker.flexrentalsolutions.com
Run Code Online (Sandbox Code Playgroud)

在运行OpenSSL 0.9.8r的计算机上,我收到以下错误:

About to connect() to shumaker.flexrentalsolutions.com port 443 (#0)
*   Trying 50.112.122.15... connected
* Connected to shumaker.flexrentalsolutions.com (50.112.122.15) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
* Closing connection #0
Run Code Online (Sandbox Code Playgroud)

如果我在运行OpenSSL 1.0.0e的计算机上运行相同的curl命令,则命令完成没有任何问题.

看来握手没有正确完成,显然是由于两个OpenSSL版本之间的某些不兼容性.

知道如何解决这个问题吗?

jba*_*ina 14

如果在协议中设置openssl版本,它可以工作:

对于命令行:

curl -v -3 https://shumaker.flexrentalsolutions.com
Run Code Online (Sandbox Code Playgroud)

如果在PHP中:

curl_setopt($ch, CURLOPT_SSLVERSION,3);
Run Code Online (Sandbox Code Playgroud)


Dan*_*erg 6

这是一个仍然开放的(OpenSSL)错误.详细信息已发布在此curl错误报告中.

更多详细信息由"mancha" 发布到OpenSSL-dev.