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嗎?
謝謝...
約翰