it-roy-ru.com

ошибка 35 cURL - неизвестная ошибка протокола SSL при подключении к api.rkd.reuters.com:443

С машины разработки (mac) нет проблем с подключением через [curl] в PHP к этому, но в Ubuntu я получаю эту ошибку. Я пробовал на локальной машине и на экземпляре Amazon AWS. Я гуглил, гуглил и продолжал подходить к кирпичным стенам. Там нет никаких ограничений брандмауэра, это полная загадка. php5-curl IS установлен в 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

Любые идеи приветствуются по этому вопросу

8
ThePHPUnicorn

У меня была такая же проблема, к сожалению, с хостом, не желающим обновиться до php 5.5.

Я решил это, создав новый класс, расширяющий SoapClient в php для использования 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;
  }

}
0
tripper54

У меня была эта проблема, и я исправил ее, установив версию SSL curl на версию 3

curl_setopt($ch, CURLOPT_SSLVERSION,3);

Очевидно сервер начал требовать SSL версии 3, и этот параметр заставил cURL с SSL снова начать работать.

8
steampowered

Починил это! Это известная проблема с Ubuntu 12.04

Эти инструкции

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

- Отмените это, это только отключенные исключения, это все еще не работает! ПОМОГИТЕ!

- РЕДАКТИРОВАТЬ - ЗДЕСЬ КАК Я ИСПРАВИЛ ЭТО В КОНЦЕ!

Я обновил до PHP 5.5 с 5.4.3 и установил следующие параметры в моем вызове, который исправил это:

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

Обновление было необходимо, потому что константа SOAP_SSL_METHOD_SSLv3 отсутствует в PHP версиях <5.5, и, к сожалению, в то время Ubuntu Server разрешал только обновление до 5.4.3 через apt-get update php5. Я установил более позднюю версию вручную, и теперь она работает нормально.

1
ThePHPUnicorn

Ошибка: ошибка CURL: 35 - OpenSSL SSL_connect: SSL_ERROR_SYSCALL при подключении к httpapi.com:443 (IP: 162.x.x.x & 204.x.x.x)

Incase WHMCS: 

Вы можете связаться со своим Хостом, чтобы добавить в белый список IP-адрес, чтобы использовать их API.

0
Arun Krish