[php] secure verbinding opzetten met een ftp via PHP

Pagina: 1
Acties:
  • 227 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 105758

Topicstarter
Ik heb een FTP server die alleen maar Explicit SSL verbinding accepteert. Dit werkt allemaal perfect via FlashFXP (vaste client op de pc)

Nu wil ik het via een webbased client doen, hiervoor gebruik ik net2ftp (http://www.net2ftp.com)

Deze werkt geweldig met een nonsecure verbinding. Maar nu wil ik deze gebruiken voor SSL, het wordt ondersteund want er is een checkbox aanwezig en wordt ook aangegeven zolang je PHP open SSL ondersteund kan net2ftp het ook.

Net2ftp maakt gebruik van de ftp_ssl_connect functie
http://nl2.php.net/nl/ftp_ssl_connect

Ik heb PHP 5.1.4 met OpenSSL support.

Als ik wil inloggen krijg ik de volgende errormelding:
Warning: ftp_login() [function.ftp-login]: SSL/TLS handshake failed in xxxxxx\filesystem.inc.php on line 56

Warning: ftp_login() [function.ftp-login]: AUTH command ok; starting SSL connection. in xxxxxx\filesystem.inc.php on line 56
Dit lijkt erop dat PHP de certificaat niet kan vinden, moet ik de aangemaakte certificaat ergens plaatsen in de PHP map ofzo?

Ik weet het niet meer, het gaat iig niet om een HTTPS verbinding. De verbinding tussen webbrowser (client) en PHP (server) gaat gewoon over poort 80 nonsecure. Het is alleen de verbinding tussen PHP en FTP via SSL.

Edit: server is een windows 2003 machine

Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 15-06 19:19
voor de TLS variant moet je gaan knutselen met http://nl3.php.net/manual...-socket-enable-crypto.php

Acties:
  • 0 Henk 'm!

Anoniem: 105758

Topicstarter
Wat moet ik gaan knutselen?

Heb even een basic sftp php filetjes gemaakt

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$ftp_server = "192.168.1.250";
$ftp_port = "44005";
$ftp_user_name = "d";
$ftp_user_pass = "d";

// set up basic ssl connection
$conn_id = ftp_ssl_connect($ftp_server, $ftp_port);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

ftp_pasv($conn_id, true);

echo ftp_pwd($conn_id);

// close the ssl connection
ftp_close($conn_id);
?>


Hiermee krijg ik dezelfde errors als hierboven. Met dit is het makkelijk verder te borduren. Ipv een bestaande applicatie. Wie o wie weet t.

code:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
echo "Source: $source";
$fp=fopen("/path/to/certificate.crt","r");
$pub_key=fread($fp,8192);
fclose($fp);
openssl_get_publickey($pub_key);
/*
 * NOTE:  Here you use the $pub_key value (converted, I guess)
 */
openssl_public_encrypt($source,$crypttext,$pub_key);
echo "String crypted: $crypttext";
?>


Hiermee kan ik de public key van de ftp mee encrypten, wat ook werkt. Moet ik deze combineren in het eerste stuk?

[ Voor 122% gewijzigd door Anoniem: 105758 op 29-05-2006 19:24 ]


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 15-06 19:19
Emm ik heb het zelf met sockets gedaan omdat die ftp functies niet wilden werken.
Eerst socket openen met stream_socket_client(),
dan stuur je de raw "AUTH TLS", dan
code:
1
stream_socket_enable_crypto($stream, 1, STREAM_CRYPTO_METHOD_TLS_CLIENT)

Dan stuur je "PBSZ 0" en dan "PROT C" dan authenticaten met USER en PASS en dan verder zoals normaal zegmaar ;)

Acties:
  • 0 Henk 'm!

Anoniem: 120582

of neem een kijkje bij curl ;-)

Groet,
Aleks

Acties:
  • 0 Henk 'm!

Anoniem: 105758

Topicstarter
PHP Warning: PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_mcrypt.dll' - The specified module could not be found.\r\n in Unknown on line 0
Kan dit er iets mee te maken hebben, vond dit in error.log van apache. Of gebruikt SSL geen mcrypt om de verbinding op te zetten?

Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 15-06 19:19
Voor stream_socket_enable_crypto() moet je volgens mij alleen compilen met --with-openssl in de ./configure

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 09-06 21:17
Het zou heeeel goed kunnen dat mcrypt vereist is om de codering af te handelen.

Acties:
  • 0 Henk 'm!

Anoniem: 105758

Topicstarter
Moet t eigenlijk zeker weten, en heb t nog niet kunnen vinden.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Anoniem: 105758 schreef op dinsdag 30 mei 2006 @ 11:54:
Kan dit er iets mee te maken hebben, vond dit in error.log van apache. Of gebruikt SSL geen mcrypt om de verbinding op te zetten?
Dan is die module niet geladen in PHP, pas je php.ini file aan (en zoek naar de regel met die dll file) en probeer het dan nog is, refreshen zou overigens genoeg moeten zijn :)

Acties:
  • 0 Henk 'm!

Anoniem: 105758

Topicstarter
GJ-tje schreef op woensdag 31 mei 2006 @ 09:39:
[...]
Dan is die module niet geladen in PHP, pas je php.ini file aan (en zoek naar de regel met die dll file) en probeer het dan nog is, refreshen zou overigens genoeg moeten zijn :)
Nee die moet je compilen met php source, helaas zelfde als met ssl moet je ook opnieuw compilen voordat die bruikbaar is.

Acties:
  • 0 Henk 'm!

Anoniem: 105758

Topicstarter
OD-Frozen schreef op maandag 29 mei 2006 @ 19:49:
Emm ik heb het zelf met sockets gedaan omdat die ftp functies niet wilden werken.
Eerst socket openen met stream_socket_client(),
dan stuur je de raw "AUTH TLS", dan
code:
1
stream_socket_enable_crypto($stream, 1, STREAM_CRYPTO_METHOD_TLS_CLIENT)

Dan stuur je "PBSZ 0" en dan "PROT C" dan authenticaten met USER en PASS en dan verder zoals normaal zegmaar ;)
Heb je misschien een werkend stuk code? Kom er niet helemaal uit, en ik gebruik SSL ipv tls

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Anoniem: 105758 schreef op woensdag 31 mei 2006 @ 09:44:
Nee die moet je compilen met php source, helaas zelfde als met ssl moet je ook opnieuw compilen voordat die bruikbaar is.
Aangezien in de melding iets over een .dll staat, ga ik er vanuit dat de TS PHP gebruikt in combinatie met Windows, dan hoef je alleen maar DLL's te laden in de php.ini en klaar, niks compilen of iets dergelijks... :)
PHP Warning: PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_mcrypt.dll' - The specified module could not be found.\r\n in Unknown on line 0
Was die foutmelding... :)

[ Voor 25% gewijzigd door CH4OS op 31-05-2006 09:57 ]


Acties:
  • 0 Henk 'm!

Anoniem: 105758

Topicstarter
GJ-tje schreef op woensdag 31 mei 2006 @ 09:53:
[...]
Aangezien in de melding iets over een .dll staat, ga ik er vanuit dat de TS PHP gebruikt in combinatie met Windows, dan hoef je alleen maar DLL's te laden in de php.ini en klaar, niks compilen of iets dergelijks... :)
[...]
Was die foutmelding... :)
Helaas is dat niet waar, en moet je wel degelijk voor Windows in de stoute schoenen stappen en de source downloaden en compilen. Zo heb je standaard geen openssl support in windows binary van PHP.

Hoe dat met mcrypt zit durf ik niet te zeggen.
Pagina: 1