webentwicklung-frage-antwort-db.com.de

cURL-Fehler 35 - Unbekannter SSL-Protokollfehler in Verbindung mit api.rkd.reuters.com:443

Von der Entwicklungsmaschine (Mac) gibt es kein Problem mit cURL in PHP, aber in Ubuntu bekomme ich diesen Fehler. Ich habe es auf einem lokalen Computer und auf einer Amazon AWS-Instanz versucht. Ich habe gegoogelt und gegoogelt und komme immer wieder zu Ziegelmauern. Es gibt keine Firewall-Beschränkungen, es ist ein komplettes Rätsel. php5-curl IS in Ubuntu installiert, ich habe einfach keine Ideen. Ich habe diesen Befehl ausgeführt:

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

und bekam diese Ausgabe, keinerlei Hinweise auf eine Lösung. OpenSSL ist ebenfalls installiert.

* 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

Alle Ideen wurden dazu begrüßt

8
ThePHPUnicorn

Ich hatte das gleiche Problem, leider mit einem Host, der nicht bereit ist, auf PHP 5.5 zu aktualisieren.

Ich habe es gelöst, indem ich eine neue Klasse erstellt habe, die php's SoapClient erweitert, um cURL zu verwenden:

/**
 * 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

Ich hatte dieses Problem und habe es behoben, indem ich die curl-SSL-Version auf Version 3 gesetzt habe

curl_setopt($ch, CURLOPT_SSLVERSION,3);

Offenbar benötigte der Server SSL-Version 3 und diese Einstellung führte dazu, dass cURL mit SSL wieder funktionierte.

8
steampowered

Behoben! Es ist ein bekanntes Problem mit Ubuntu 12.04

Diese Anweisungen

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

- Abbruch, es wurden nur Ausnahmen deaktiviert, das funktioniert immer noch nicht! HILFE!

- EDIT - HERES WIE ICH ES ENDE BEENDET HAT!

Ich habe ein Upgrade auf PHP 5.5 von 5.4.3 durchgeführt und in meinem Aufruf die folgenden Optionen festgelegt, durch die der Fehler behoben wurde:

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

Das Upgrade war notwendig, da die Konstante SOAP_SSL_METHOD_SSLv3 in PHP -Versionen <5.5 nicht vorhanden ist und der Ubuntu-Server zu diesem Zeitpunkt leider nur ein Upgrade auf 5.4.3 über apt-get update php5 zulässt. Ich habe die spätere Version manuell installiert und funktioniert jetzt einwandfrei.

1
ThePHPUnicorn

Fehler: CURL Fehler: 35 - OpenSSL SSL_connect: SSL_ERROR_SYSCALL in Verbindung mit httpapi.com:443 (IP: 162.x.x.x & 204.x.x.x)

Incase von WHMCS: 

Sie können sich mit Ihrem Host in Verbindung setzen, um die IP-Adresse am Ende der Liste auf die Positivliste zu setzen und deren API zu verwenden.

0
Arun Krish