# fsockopen mit ssl



## Meccan (23. August 2007)

Hallo Leute,

ich versuche schon seit geraumer Zeit eine Seite
die mit SSL verschlüselt ist per fsockopen auszulesen.
Hab das aber bist heute nicht geschaft.


```
$fp = fsockopen ("ssl://banking.postbank.de/app/welcome.do", 443, $errno, $errstr, 30);
if (!$fp) 
{
    echo "$errstr ($errno)<br />\n";
}
else
{
   echo "es geht;"
}
```

Es wir mir meistens die selber Fehlermeldung ausgegeben, dass mein PHP mit den SSL Optionen nicht kompliliert wurde, also mit Curl und OpenSSL beides wurde aber bei mir mit kompliliert, was auch in der phpinfo so steht.
Da ich dann dachte ich mache selber eine Fehler beim kompilieren, habe ich Lampp (Xampp für Win) ausprobiert, da gibt es aber den gleichen fehler.

Ich hoffe ihr könnt mir helfen.
Danke im Voraus für eure Antwort.

MFG Meccan


----------



## tobias_petry (23. August 2007)

Öhm seit wann gibt es denn ein SSL Protokoll ?
Wenn du eine SSL geschützte Webseite aufrufen willst ist das Protokoll immernoch https


----------



## Meccan (23. August 2007)

Hi,

laut http://de3.php.net/manual/de/function.fsockopen.php benutzt
man bei einer https verbindung den Präfix ssl:// warum auch immmer.

Und wenn ich den Code mit den https Präfix ausprobiere
wir mir diese Fehlermeldung ausgegeben:

* Unable to find the socket transport "https" - did you forget to enable it when you configured PHP? (0)*

Aber ich hab PHP mit OpenSSL und Curl kompiliert.
Und selbst mit Lampp oder Xampp funktioniert es nicht.

Grüße Meccan


----------



## Mairhofer (24. August 2007)

Warum man ssl:// als Präfix nutzen soll, erklärt sich daher, welche Transportlayer PHP kennt. Diese werden hier aufgelistet: TransportLayer

Zu deinem Problem:
Du baust einen Socket auf mit folgender Zeile:

```
$fp = fsockopen ("ssl://banking.postbank.de/app/welcome.do", 443, $errno, $errstr, 30);
```

Aus dem Manual von PHP sind die Parameter der Funktion wie folgt definiert: 

```
resource fsockopen ( string $hostname [, int $port [, int &$errno [, string &$errstr [, float $timeout]]]] )
```


Wie man sieht, ist der erste Paramter der Hostname. Hostname ist nicht die Webseite, sondern der Host/Server, dies wäre in deinem Beispiel 

```
$fp = fsockopen ("ssl://banking.postbank.de", 443, $errno, $errstr, 30);
```

Um dann die von dir gewünschte Adresse auf diesem Host aufzurufen, musst man per "GET /app/welcome.do" der socket stream schreiben.

Müsste so klappen


----------



## Meccan (24. August 2007)

Hallo,

schonmal vielen dank für deine Antwort.

Ich habe meinen Code jetzt so umgeschrieben:


```
<?
 $fp = fsockopen ("ssl://banking.postbank.de", 443, $errno, $errstr, 30);   
 if (!$fp) 
 {
    echo "$errstr ($errno)<br />\n";
 } 
else 
{
        $path = 'app/welcome.do';
         $host = 'banking.postbank.de';
         $referer = 'http://www.postbank.de/';
    fputs($fp, "GET /$path HTTP/1.1\r\n"); 
    fputs($fp, "Host: $host\r\n");
        fputs($fp, "Referer: $referer\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
    
    while (!feof($fp)) 
    {
        echo fgets($fp,128);
    }
    fclose($fp);
}
?>
```

Leider bekomm ich noch leider die selber Fehlermeldung wie immer:
Warning: fsockopen() [function.fsockopen]: unable to connect to banking.postbank.de:443 in blablabla on line 2
Connection refused (61)

Danke schonmal für die Antwort.

MFG Meccan


----------



## Meccan (24. August 2007)

Hallo,

also die Lösung oben funktioniert wunderbar.
Es ging nur eben nicht, weil so wie es aussieht der
Port bei mir an der FH gesperrt ist was mich eigentlihc wundert,
da ich auf jeder SSL verschlüsselte Seite zu greifen kann.

Vielen dank nochmal an dich Mairhofer.

Grüße Meccan


----------



## TS-JC (2. November 2007)

Habe das Selbe Problem.
Hab eine recht neue Version von xampplite laufen, angeblich is SSL da aktiviert laut Anzeige.

Hat jemand eine Lösung?
Ist da bei mir dann auch der Port gesperrt oder wie?


----------



## Meccan (2. November 2007)

kann gut sein, bei mir war es so.
Hast du vielleicht ne Möglichkeit
das Script woanders auszuprobieren.
Aber wenn du es von zuhause aus probierst
müsste es normal funktionieren.
Versuch vielleicht noch ein anderes Xampp.

Grüße


----------



## Timo_B (4. November 2007)

<ot>
Mal ne andere Frage: Was willst du mit der Postbank Onlinebanking Seite?

Gruß
Timo
</ot>


----------



## Meccan (4. November 2007)

mit der Postbankseite will ich nichts.
Ich brauchte nur eine SSL verschlüsselte
Seite und da ist mir spontan meine Bank eingefallen 

grüße


----------



## Timo_B (4. November 2007)

lol achso 

schon gedacht, wir unterstützen hier einen phischer oder so^^


----------



## Michael Engel (5. November 2007)

Meccan hat gesagt.:


> Leider bekomm ich noch leider die selber Fehlermeldung wie immer:
> Warning: fsockopen() [function.fsockopen]: unable to connect to banking.postbank.de:443 in blablabla on line 2
> Connection refused (61)
> 
> ...



Die Fehlermeldung ist doch recht eindeutig... dein Server hat ordnungsgemäß eine Verbindung aufgebaut und die Firewall der Postbank hat die Verbindung abgelehnt. Was mir da einfällt... Port falsch? Das du auf Systeme zugreifen willst die nicht öffentlich sind?

Gibt es denn bei deinem Server auf den du eigentlich zugreifen willst die Gleichen Fehler?



> Öhm seit wann gibt es denn ein SSL Protokoll ?
> Wenn du eine SSL geschützte Webseite aufrufen willst ist das Protokoll immernoch https


SSL ist das Synonym für TLS verschlüsselte Verbindungen. Socketopen muss nicht zwangsweise nur mit HTTP Befehlen arbeiten. Es kann auch ein Vollkommen eigenes Protokoll verwendet werden.

Ich habe vor kurzen eine EPPoTCP - PHP Anwendung geschrieben die verwendeten auch diese Form der Verschlüsselung, aber mit HHTP Kommunikation hatte das wenig zu tun ^^


----------

