trunx: fsockopen mit ssl und htaccess

Hallo Forum,
wie im Titel angegeben, versuche ich gerade eine Verbindung zu einem Server aufzubauen, was mir aber hartnäckig misslingt, hier mal der Code

  
 $host = "ssl://example.org";  
 $uri  = "/geheim.html";  
 $usr  = "icke";  
 $pwd  = "xyz";  
 header("Content-type: text/html");  
 $sock = fsockopen($host, 443, $errno, $errstr, 5);  
 fputs($sock, "GET ".$uri." HTTP/1.1\r\n");  
 fputs($sock, "Host: ".$host."\r\n");  
 fputs($sock, "Authorization: Basic ".base64_encode($usr.":".$pwd)."\r\n");  
 fputs($sock, "Connection: close\r\n\r\n");  
 while(!feof($sock))  
 echo fgets($sock, 4096);  
 fclose($sock);  

Fehlermeldung ist ein "Bad Request". Ich selbst vermute, dass der Port falsch ist, wie bekommt man den denn raus? Wenn ich mich hier per Hand auf dem Server anmelde, muss ich ja auch den Port nicht wissen...

Ich versteh's nicht und es wäre schön, wenn mir jemand helfen könnte.
Danke :)

bye trunx

--
Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>da</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
  1. Tach!

    $host = "ssl://example.org";
    $sock = fsockopen($host, 443, $errno, $errstr, 5);

    Das ssl:// mag zwar für fsockopen() ein Kennzeichen sein, dass es eine SSL-Verbindung aufbauen soll, aber

    fputs($sock, "Host: ".$host."\r\n");

    für den Host-Header ist der Hostname und nicht solch eine Pseudo-URI anzugeben.

    Fehlermeldung ist ein "Bad Request". Ich selbst vermute, dass der Port falsch ist, wie bekommt man den denn raus? Wenn ich mich hier per Hand auf dem Server anmelde, muss ich ja auch den Port nicht wissen...

    Nein, der Port ist es nicht. Unter "per Hand am Server anmelden", meinst du vermutlich, dass du einen Browser als Werkzeug verwendest, also alles andere als "per Hand" arbeitest. Im Browser gibst du den Protokollnamen https als Anfang der URL an. Zu diesem wird der zugehörige Standard-Port ermittelt und vom Browser zum Verbindungsaufbau verwendet. Wenn du nun den Verbindungsaufbau selbst machst, musst du entweder einen Wrapper nehmen, der für dich eine vollständige URL interpretiert und alles weitere einleitet, oder du musst wirklich alles per Hand machen. Dazu zählt dann auch eine grundlegende Kenntnis der verwendeten Protokolle.

    dedlfix.

    1. Das ssl:// mag zwar für fsockopen() ein Kennzeichen sein, dass es eine SSL-Verbindung aufbauen soll, aber

      fputs($sock, "Host: ".$host."\r\n");

      für den Host-Header ist der Hostname und nicht solch eine Pseudo-URI anzugeben.
      Nein, der Port ist es nicht.

      hey danke, du hast natürlich Recht! Jetzt geht's...
      (immer diese kleinen Fehler, grummel...)

      --
      Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>da</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
      1. Hello,

        fputs($sock, "Host: ".$host."\r\n");

        für den Host-Header ist der Hostname und nicht solch eine Pseudo-URI anzugeben.
        Nein, der Port ist es nicht.

        hey danke, du hast natürlich Recht! Jetzt geht's...

        Heißt das jetzt, dass PHP sich um den ganzen Verbindungsdialog einer SSL-Verbindung automatisch kümmert, ohne Schlüssel anzufordern oder ähnliches?

        Ich habe das bisher auch noch nicht ausprobiert und es wäre doch ein netter Lernerfolg so ganz nebenbei...

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Tach!

          Heißt das jetzt, dass PHP sich um den ganzen Verbindungsdialog einer SSL-Verbindung automatisch kümmert, ohne Schlüssel anzufordern oder ähnliches?

          Laut Beschreibung im Handbuch zu fsockopen() scheint sich PHP um alles zu kümmern.

          dedlfix.