2012-04-08 4 views
2

Ich möchte eine HTTPS-Anfrage mit Pear http_request2 ($ url) -Klasse. Ich bin in der Lage, HTTP-Anfrage, aber nicht https zu machen. und die Website erleichtern sowohl http als auch https. Kein Problem, wenn der Server auf https reagiert.wie https Anfrage mit PHP zu machen Http_Request2()

require 'HTTP/Request2.php'; 
    $url = 'https://collegedb2.ferryfair.com'; 
    $r = new Http_Request2($url); 
    $r->setMethod(HTTP_Request2::METHOD_POST); 
    try { 
     $response = $r->send(); 
    } catch (Exception $exc) { 
     $es = $exc->getTraceAsString(); 
     $ets=$exc->__toString(); 
     $egc=$exc->getCode(); 
     $egl=$exc->getLine(); 
     $egm=$exc->getMessage(); 
     $egt=$exc->getTrace(); 
     $response = null; 
    } 
    $page = $response->getBody(); 
    echo $page; 

dies ist der Fehler msg:

$egm=(string) Unable to connect to ssl://collegedb2.ferryfair.com:443. Error: stream_socket_client(): unable to connect to ssl://collegedb2.ferryfair.com:443 (Unknown error)

+0

Hilfe plzz, es ist sehr wichtig für mich – neckTwi

+0

Es Das SSL-Zertifikat scheint korrekt installiert/konfiguriert, wenn ich die folgende Fehlermeldung erhalten verbindet: ssl_error_rx_malformed_certificate (SSL3_GET_SERVER_CERTIFICATE: unable Public-Key-Parameter zu finden) – stewe

+0

u versucht Verbindungs ​​https://collegedb2.ferryfair.com Es ist nur in unserem lokalen Netzwerk verfügbar. SSL-Zertifikat auf dem Server wurde korrekt installiert. Problem ist mit http_request2 Klasse, es ist nicht möglich, https Anfragen zu machen. openssl ist in php aktiviert, in phpinfo() – neckTwi

Antwort

0

HTTP_Request2 ist absolut in der Lage HTTPS-Anforderungen zu machen. Es gibt wahrscheinlich einen tieferen Fehler, z.B. ein benutzerdefiniertes SSL-Zertifikat, das Probleme verursacht.

Installieren Sie Wireshark und prüfen Sie, welchen Fehler Sie damit tatsächlich bekommen. Posten Sie das zurück.

+0

thanq cweiske aktiviert, habe ich eine zeitlang übersprungen, dieses Problem zu lösen. Die Ziel-Webanwendung verwendet ein selbst signiertes SSL-Zertifikat. Ich denke, ich sollte das Zertifikat in meiner Webanwendung installieren. Ich weiß nicht wie. ich habe viel darüber gegoogelt, endlich aufgegeben. Ich brauche Hilfe hier. – neckTwi

+0

Sie können entweder die Zertifikatsprüfung deaktivieren - siehe die Optionen in http://pear.php.net/manual/en/package.http.http-request2.config.php - oder installieren Sie das öffentliche Zertifikat der Behörde (CA), die signierte das selbstsignierte Zertifikat. – cweiske

+0

danke. Wie kann ich das SSL-Zertifikat der Ziel-Webanwendung mit den Parametern ssl_local_cert oder ssl_capath verwenden? Ich habe den Parameter ssl_local_cert nicht vollständig verstanden, sollte er den Dateinamen des SSL-Zertifikats der Ziel-Webanwendung erhalten? – neckTwi

9

Der Kommentar zur Deaktivierung der Zertifikatsprüfung war der Schlüssel für mich.

$request = new HTTP_Request2('https://someserver.com/somepath/something', 
    HTTP_Request2::METHOD_POST); 

$request->setConfig(array(
    'ssl_verify_peer' => FALSE, 
    'ssl_verify_host' => FALSE 
)); 
+0

Ich habe das Zielserver-Zertifikat bei mir bekommen. Ich möchte das Zertifikat überprüfen. Wenn es dir gelingt, das Ziel zu überprüfen, poste es bitte. – neckTwi

+1

Aber denk immer daran, dass du nur die Wurzel des Bösen unterdrückst – Jeredepp

3

Ich habe dieses Problem festgestellt. Das Update (für mich) war ‚Locke‘, wie der Adapter zu verwenden, zum Beispiel:

$request = new Http_Request2('https://whatever'); 
$request->setAdapter('curl'); 
$response = $request->send(); 

Siehe auch die „SSL-Parameter“ auf http://pear.php.net/manual/en/package.http.http-request2.config.php die sagen

Peer verification is likely to fail if you don't explicitly provide ssl_cafile and/or ssl_capath, especially with Socket adapter.

Vermutlich curl weiß, wo man Suchen Sie eine lokale CA-Datei, der Sie vertrauen können.

(PHP 5.4.38 mit Curl).

+0

Ah, danke für diesen. Jetzt kann ich mich nicht mehr darum kümmern, alle meine Anfragen mit CURL neu zu schreiben. ;-) – Leo