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
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.
<?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);
?>
En met de volgende code kan ik de public key (die met het ftp programma aangemaakt is) uitlezen.
<?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";
?>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.