10

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

curl -v https://shumaker.flexrentalsolutions.com

在运行 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

如果我在运行 OpenSSL 1.0.0e 的机器上运行相同的 curl 命令,该命令将毫无问题地完成。

握手似乎没有正确完成,显然是由于两个 OpenSSL 版本之间的一些不兼容。

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

4

5 回答 5

13

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

对于命令行:

curl -v -3 https://shumaker.flexrentalsolutions.com

如果在 php 中:

curl_setopt($ch, CURLOPT_SSLVERSION,3);
于 2013-06-21T12:27:20.423 回答
6

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

更多细节由“mancha”发布到 OpenSSL-dev 。

于 2011-12-23T22:41:43.973 回答
0

这不是一个好的解决方案,但它比车轮旋转要好,所以我将在此处添加它作为答案:

如果可以,请使用 GnuTLS 模块而不是 mod_ssl。它不受 OpenSSL 的约束,所以这个可怕的、浪费时间的问题被巧妙地回避了。

于 2012-01-18T19:40:57.063 回答
0

现在由于POODLE vulnerability很多网站现在都禁用了SSL 3.0

你应该TLS这样使用:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1)

如果您仍然有错误(对于 Apache),请检查您是否vhost获得了正确的设置ServerName

于 2015-05-21T12:20:20.980 回答
0

我在某些 https 服务器上使用 brew 在 OS X 上遇到了这个问题,brew 在内部使用 curl。请注意,这仅适用于 OS X 10.7.5,它卡在 OpenSSL/0.9.8r 上。我会升级,但苹果在这台 iMac 上不支持 > 10.7!

我的解决方法是用 brew 升级 curl,将版本升级到 1.0.2f,幸运的是 curl 的 brew install 没有

brew install curl
于 2016-02-02T07:34:04.453 回答