【问题标题】:cURL error 35 - Unknown SSL protocol error in connection to api.rkd.reuters.com:443cURL 错误 35 - 连接到 api.rkd.reuters.com:443 的未知 SSL 协议错误
【发布时间】:2013-10-23 10:20:29
【问题描述】:

从开发机器(mac)通过 PHP 中的 cURL 连接到这个没有问题,但是在 Ubuntu 中,我得到了这个错误。我已经在本地机器和 Amazon AWS 实例上尝试过。我用谷歌搜索和谷歌搜索并不断接近砖墙。没有防火墙限制,这是一个完全的谜。 php5-curl 安装在 ubuntu 中,我只是没有任何想法。我运行了这个命令:

curl -v https://api.rkd.reuters.com/api/2006/05/01/TokenManagement_1.svc/Anonymous

并得到这个输出,没有任何解决方案的线索。 OpenSSL 也已安装。

* About to connect() to api.rkd.reuters.com port 443 (#0)
*   Trying 159.220.40.240... connected
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to api.rkd.reuters.com:443 
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to api.rkd.reuters.com:443

欢迎对此提出任何想法

【问题讨论】:

标签: php curl ssl amazon-web-services


【解决方案1】:

我正在使用 Fefora 33,其他用户提出的解决方案对我不起作用。在我的情况下,问题是由 Fedora 33 上的更改引起的,默认情况下禁用了 SHA-1 签名 (https://fedoraproject.org/wiki/Changes/StrongCryptoSettings2)。

我解决了改变加密政策的问题:

update-crypto-policies --set DEFAULT:FEDORA32

【讨论】:

    【解决方案2】:

    通过将 curl-ca-bundle.crt 添加到 curl.exe 旁边的文件夹中修复

    【讨论】:

      【解决方案3】:

      错误:CURL 错误:35 - OpenSSL SSL_connect: SSL_ERROR_SYSCALL 连接到 httpapi.com:443(IP:162.x.x.x 和 204.x.x.x)

      WHMCS 的情况:

      您可以联系您的主机,将 IP 地址列入白名单,以使用他们的 API。

      【讨论】:

      • 我不明白这是如何回答这个问题的。
      • 这个答案与问题无关,但不知何故我偶然发现了这个&它解决了我的问题。非常感谢。
      【解决方案4】:

      我遇到了同样的问题,不幸的是主机不愿意升级到 php 5.5。

      我通过创建一个扩展 php 的 SoapClient 以使用 cURL 的新类解决了这个问题:

      /**
       * New SoapClient class.
       * This extends php's SoapClient,
       * overriding __doRequest to use cURL to send the SOAP request.
       */
      class SoapClientCurl extends SoapClient {
      
        public function __doRequest($request, $location, $action, $version, $one_way = NULL) {
      $soap_request = $request;
      $header = array(
        'Content-type: application/soap+xml; charset=utf-8',
        "Accept: text/xml",
        "Cache-Control: no-cache",
        "Pragma: no-cache",
        "SOAPAction: \"$action\"",
        "Content-length: " . strlen($soap_request),
      );
      $soap_do = curl_init();
      $url = $location;
      $options = array(
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => FALSE,
        //CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_SSL_VERIFYPEER => FALSE,
        CURLOPT_RETURNTRANSFER => TRUE,
        //CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)',
        CURLOPT_VERBOSE => true,
        CURLOPT_POST => TRUE,
        CURLOPT_URL => $url,
        CURLOPT_POSTFIELDS => $soap_request,
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_FAILONERROR => TRUE,
        CURLOPT_SSLVERSION => 3,
      );
      
      curl_setopt_array($soap_do, $options);
      $output = curl_exec($soap_do);
      if ($output === FALSE) {
        $err = 'Curl error: ' . curl_error($soap_do);
      }
      else {
        ///Operation completed successfully
      }
      curl_close($soap_do);
      
      // Uncomment the following line to let the parent handle the request.
      //return parent::__doRequest($request, $location, $action, $version);
      return $output;
        }
      
      }
      

      【讨论】:

        【解决方案5】:

        修好了!这是 Ubuntu 12.04 的一个已知问题

        这些说明

        http://willbradley.name/2012/10/workaround-for-php-error-in-ubuntu-12-04-soapclient-ssl-crypto-enabling-timeout/

        -- 取消它,它只是禁用了异常,这仍然不起作用!帮助!

        -- 编辑 - 我最后是如何修复它的!

        我从 5.4.3 升级到 PHP 5.5 并在我的调用中设置了以下选项,从而修复了它:

        $options = array('ssl_method' => SOAP_SSL_METHOD_SSLv3,'soap_version' => SOAP_1_2);
        $sc = new SoapClient('https://my-url.com/call/', $options);
        

        升级是必要的,因为 PHP 版本

        【讨论】:

        • 所以 MTU 也没有帮助?
        【解决方案6】:

        我遇到了这个问题,我通过将 curl SSL 版本设置为版本 3 来修复它

        curl_setopt($ch, CURLOPT_SSLVERSION,3);
        

        显然服务器开始需要 SSL 版本 3,此设置导致带有 SSL 的 cURL 再次开始工作。

        【讨论】:

          猜你喜欢
          • 2019-01-11
          • 1970-01-01
          • 1970-01-01
          • 2011-03-15
          • 2013-04-28
          • 1970-01-01
          • 2019-12-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多