Leeloo5E: PEAR: HTTP_Request - HTTPS-Request via Proxy

Hallihallo ihr lieben SelfHTMLForumler (oder wie auch immer ;-) ),

es dreht sich um Folgendes:
Ich möchte einen HTTP_Request an eine HTTPS-URL abgeben. Das ganze hab ich probiert mit dem PEAR-Modul HTTP_Request, da ich dachte, das ist genau das, was ich brauche. Allerdings untersützt dieses Modul HTTPS in Zusammenhang mit einem Proxy nicht.
Mein TestCode sieht derzeit so aus:

  
 require_once "Request.php";  
  
 $req =& new HTTP_Request("https://www.example.org");  
 $req->setProxy("proxy", 8080);  
 $response = $req->sendRequest();  
 if (PEAR::isError($response)) {  
  echo $response->getMessage();  
 } else {  
   echo $req->getResponseBody();  
   echo $req->getResponseCode();  
 }//end else  
  
 foreach ($req->getResponseHeader() as $name => $value) {  
   echo $name . " = " . $value . "<br/>";  
 }//end foreach  

Beim Ausführen erhalte ich folgende Fehlermeldung:
HTTPS proxies are not supported.

Ohne Proxy komm ich leider nicht an die externe URL. Und ohne HTTPS lässt sich die gesamte Abfrage, die ich letztendlich machen will nicht realisieren, da der Zielhost in diesem Fall nur HTTPS erlaubt.

Hat jemand eine Idee, wie ich das noch umsetzen kann?
Es gibt ja noch HTTP, HTTP_Client und HTTP_Download. Allerdings unterstützen die wohl überhaupt keinen Proxy. Jedenfalls konnte ich bisher keine passende Funktion oder Variable in der Beschreibung finden.

jaja, wer lesen kann ist klar im Vorteil. Ich übe mich weiter im Lesen diesbezüglich und hoffe auf eine Lösung.

Vielen Dank.

Gruß,
Leeloo

--
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra
  1. Hallo Leeloo,

    Hat jemand eine Idee, wie ich das noch umsetzen kann?

    Vielleicht kann die curl()-Erweiterung von PHP Proxies und HTTPS. Ansonsten wirst Du schlechte Karten haben, denn ich habe vor einiger Zeit mal beschrieben, wie Proxies und HTTPS funktionieren. Das Problem ist folgendes: Du brauchst erst eine Text-Modus-Verbindung mit dem Proxy-Server, um ihm den CONNECT-Befehl zu übermitteln, *danach* erfolgt erst der TLS-Handshake. PEAR HTTP_Request setzt HTTPS ohne Proxy halt einfach so um, dass es mittels des tls://-Wrappers von PHP bei fsockopen() eine TLS-Verbindung zum Server aufbaut. Bei Proxies muss der Handshake aber nicht *direkt* nach Verbindung zum Server, sondern erst nach dem CONNECT-Befehl durchgezogen werden. D.h. der tls://-Wrapper kann nicht genutzt werden und ich bezweifle, dass PHP nachträglich einen TLS-Handshake auf einer offenen Verbindung starten kann. Du könntest natürlich TLS komplett selbst nachprogrammieren, aber _davon_ würde ich Dir wirklich abraten, denn das in PHP zu tun ist mit SICHERHEIT ein Krampf hoch zehn und die Wahrscheinlichkeit, dass Du das sicher (!) hinbekommst, dürfte gegen Null gehen, denn selbst die Experten auf dem Gebiet machen da immer wieder Fehler.

    Insofern: curl(), falls es das kann, oder Dein Vorhaben vergessen.

    Viele Grüße,
    Christian

    --
    "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
    1. Hallo Christian,

      danke für deine Antwort. Werd mir mal cURL genauer anschauen, aber auf den ersten Blick scheints nicht wirklich das zu können was ich brauche. Eine andere Variante wäre meinem Apachen einen ProxyRemote Directive zu geben. Muss ich mal ausprobieren. Dann könnte ich weiterhin HTTP_Request nutzen ohne einen Proxy dort anzugeben. Denn der Apache handelt das von selbst.

      Gruß,
      Leeloo

      --
      "Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra