2017-01-22 27 views
1

我忙于一个需要连接到FTPS服务器的curl php库。FTPS CURL PHP

我有这半工作...如果我连接到ftp://domain.com然后它的工作。如果我使用tcpflow观察服务器上的通信,我会看到它使用AUTH TLS登录,并且所有通信都被加密。该文件上传,所有的好..

我不确定的是,如果它有效尝试连接,而不是ftps://domain.com?

我问的原因是因为如果我从FTP协议更改为FTPS在卷曲,则登录失败,服务器(看tcpflow通讯)说,登录失败:

191.101.002.204.00021-088.099.012.154.51630: 530 Please login with USER and PASS. 

而且,当我试图连接到ftps时看到通信://我没有看到客户端发出AUTH TLS命令,因为它使用普通的ftp://

我遇到的问题是,似乎我的客户端的FTP服务器,我们必须最终连接到似乎不允许没有ftps://协议的连接。

如果我连接使用的lftp我可以这样做使用FTPS://但我必须禁用SSL: 设置ftp://ssl-allow没有

如果我使用FTP尝试的lftp连接://它只是挂在登录命令

我不是真的是经历了FTP或TLS/SSL,所以我不知道它也许是因为客户端的服务器没有证书设置正确..

这是我的一部分curl代码,它与ftp://一起工作,但不是ftps://

// Works 
$url = "ftp://proxy.plettretreat.co.za/"; 
// Does not work 
$url = "ftps://proxy.plettretreat.co.za/"; 
$port = 990; 
$username = "ftpuser"; 
$password = "pass"; 

$filename = "/test.php"; 
$file = dirname(__FILE__)."/test.php"; 

$c = curl_init(); 

// check for successful connection 
if (! $c) 
     throw new Exception('Could not initialize cURL.'); 

$options = array(
     CURLOPT_USERPWD  => $username.':'.$password, 
     CURLOPT_SSL_VERIFYPEER =>  0, 
     CURLOPT_SSL_VERIFYHOST =>  0, 
     CURLOPT_RETURNTRANSFER =>  1, 
     CURLOPT_BINARYTRANSFER =>  1,   
     CURLOPT_FTP_SSL  => CURLFTPSSL_ALL, // require SSL For both control and data connections 
     CURLOPT_FTPSSLAUTH  => CURLFTPAUTH_TLS, // let cURL choose the FTP authentication method (either SSL or TLS) 
     CURLOPT_UPLOAD   => true, 
     CURLOPT_PORT   => $port, 
     CURLOPT_TIMEOUT  => 30, 
); 

我不确定的另一件事是我的客户端给了我一个IP地址来连接..可以在ftps中使用IP地址吗?我会认为证书主要是证明一个域名?

TL;博士

1)我可以使用FTPS://domain.com使用curl PHP连接? 2)如果我可以在curl中使用ftps://,那么我如何得到curl来登录(发出auth tls命令)? 3)FTP服务器只能使用IP地址使用SSL/TLS吗?

谢谢...

约翰

回答