【问题标题】:Difficulty with getting TLS 1.2 to work with cURL使 TLS 1.2 难以与 cURL 一起使用
【发布时间】:2016-08-01 22:37:03
【问题描述】:

在我的 curl 操作中,我无法卷曲使用 TLS 1.2 的 HTTPS url - 我将登录数据发布到网站并将其保存在 cookiefile 中。我收到的错误消息是这样的:

“API 错误:SSL 连接错误”

我尝试将curl_setopt($ch, CURLOPT_POST) 设置为 6,但这似乎不起作用,有什么建议吗?

我正在使用的版本:

OpenSSL 版本为 1.0.2b CURL 版本是 7.49.1 PHP 是 5.5 代码如下:

    public function curl_request($url, $data, $method = 'GET', $headers = array(), $ssl_verify = false)
    {
            $ch = curl_init();

            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $ssl_verify);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $ssl_verify);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ch, CURLOPT_TIMEOUT, 20);
            curl_setopt($ch, CURLOPT_FAILONERROR, false);
            curl_setopt($ch, CURLOPT_HTTP200ALIASES, range(400, 599));
            curl_setopt($ch, CURLINFO_HEADER_OUT, true);


            if ($method == 'POST')
            {
                    curl_setopt($ch, CURLOPT_POST, 6);
                    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            }

            $resp  = curl_exec($ch);      

            if(curl_errno($ch))
            {
                    throw new Exception('Unleashed API Error:' . curl_error($ch));
            }

            //print("<pre>" . print_r($resp, true). "</pre>")

            $info = curl_getinfo($ch);

            curl_close($ch);

            $output = array();
            $output['resp'] = $resp;
            $output['info'] = $info;

【问题讨论】:

标签: php ssl curl


【解决方案1】:

OpenSSL 版本为 0.9.8b

OpenSSL 0.9.8 中不支持 TLS 1.2。您至少需要 OpenSSL 版本 1.0.1。

【讨论】:

  • 谢谢,我刚刚更新了 OpenSSL,应该解决了问题还是我错过了其他什么?
  • @Marcin:如果您不仅更新了 OpenSSL 二进制文件,还更新了 curl 以便它使用这个库,那么至少应该解决不支持 TLS 1.2 的问题。
猜你喜欢
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 2015-09-01
  • 2020-02-10
  • 2017-09-26
  • 1970-01-01
相关资源
最近更新 更多