verbinding maken met een secure ftp, krijg een error
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:
Quote:
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
Warning: ftp_login() [function.ftp-login]: AUTH command ok; starting SSL connection. in xxxxxx\filesystem.inc.php on line 56
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.
Het gaat om een windows 2003 server.
Om in de source van net2ftp te gaan werken is een beetje onhandig, dus hier een basic ftp script waarmee ik dezelfde errors krijg.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
?>
$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);
?>
En met de volgende code kan ik de public key (die met het ftp programma aangemaakt is) uitlezen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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";
?>
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";
?>
Wat moet ik doen om er voor te zorgen dat de public key via php in verbinding komt met de private key van de ftp programma.
Want onder FLASHfxp (windows client) werkt het perfect.
Je moet even op http://www.whatismyip.com kijken wat je echte ip adres is en de poorten in je router opengooien.
Zoals opgemerkt kan worden in mijn tekst werkt de verbinding gewoon, omdat dit een test omgeving binnen mijn eigen netwerk is. En mijn server binnen mijn eigen netwerk heeft ip 192.168.1.250
Quote:
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?
verwijst je extension_dir naar de juiste locatie?
Superman:
Zoals opgemerkt kan worden in mijn tekst werkt de verbinding gewoon, omdat dit een test omgeving binnen mijn eigen netwerk is. En mijn server binnen mijn eigen netwerk heeft ip 192.168.1.250
ja maar je probleem is er omdat je bij net2ftp.com met je locale IP probeert te ftpen?
Of het nu dus gaat om een test omgeveing of niet...via net2ftp heb je je externe IP nodig