【问题标题】:Running curl with OpenSSL 0.9.8 against OpenSSL 1.0.0 server causes handshake error?针对 OpenSSL 1.0.0 服务器使用 OpenSSL 0.9.8 运行 curl 会导致握手错误?
【发布时间】:2012-01-27 00:41:48
【问题描述】:

如果我在运行 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 版本之间存在一些不兼容。

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

【问题讨论】:

    标签: curl openssl handshake


    【解决方案1】:

    如果你在协议中设置了openssl版本,就可以了:

    对于命令行:

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

    如果在php中:

    curl_setopt($ch, CURLOPT_SSLVERSION,3);
    

    【讨论】:

    • 我遇到了 OP 提到的这个 openssl bug 错误。 @jbaylina 的解决方案解决了我的问题。谢谢!
    【解决方案2】:

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

    更多详情请参阅“mancha”posted to OpenSSL-dev

    【讨论】:

    • 通过使用指向 OpenSSL 0.9.8 的 mod_ssl 模块构建,我能够让 Apache 使用 OpenSSL 0.9.8。做出这种改变就解决了这个问题。知道何时修复 OpenSSL 1.0.0 错误吗?
    【解决方案3】:

    现在由于POODLE vulnerability,许多网站现在正在禁用SSL 3.0

    你应该像这样使用TLS

    curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1)

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

    【讨论】:

    • POODLE 在 2011 年不存在。我们知道填充错误早在 2005 年左右就存在,但大多数人选择忽略它。浏览器是问题的一部分,因为它们长时间启用 SSLv3。请参阅 Loren Weith 的 Differences Between SSLv2, SSLv3, and TLS
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      我在某些 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-11
        • 1970-01-01
        • 1970-01-01
        • 2020-03-07
        • 2011-05-14
        • 1970-01-01
        • 2020-08-23
        • 1970-01-01
        相关资源
        最近更新 更多