在windows中通过libcurl在ssl上运行ftp

时间:2013-12-09 13:39:12

标签: c++ authentication ssl ftp libcurl

大家好!

我是笨蛋,我遇到了问题:

FTP服务器强制SSL用于用户登录

所以我这样编码:

curl_easy_setopt(ftp_handle, CURLOPT_URL, "ftp://192.168.1.xxx:990");
curl_easy_setopt(ftp_handle, CURLOPT_USERNAME, "user");
curl_easy_setopt(ftp_handle, CURLOPT_PASSWORD, "password");
curl_easy_setopt(ftp_handle, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(ftp_handle, CURLOPT_SSL_VERIFYHOST, 2L);
curl_easy_setopt(ftp_handle, CURLOPT_SSLVERSION, CURL_SSLVERSION_DEFAULT);
curl_easy_setopt(ftp_handle, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_SSL);
curl_easy_setopt(ftp_handle, CURLOPT_VERBOSE, 1L);
CURLcode res = curl_easy_perform(ftp_handle);

当我使用此代码运行时,我收到消息:

  • 关于connect()到127.0.0.1端口990(#0)
  • 尝试127.0.0.1 ...
  • 添加句柄:conn:0x3ff480
  • 添加句柄:发送:0
  • 添加句柄:recv:0
  • Curl_addHandleToPipeline:length:1
    • Conn 0(0x3ff480)send_pipe:1,recv_pipe:0
  • 连接到127.0.0.1(127.0.0.1)端口990(#0)

它阻止在这里,而不是auth ssl / tls

我搜索了很多页面,并尝试使用它们,但总是失败

那么,有谁知道如何修复此代码?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用带有libcurl的FTP:// URL意味着显式FTPS,这意味着它将以纯文本开头并使用显式命令升级到SSL。这通常是在21号端口完成的。

端口990通常用于隐式FTPS,这意味着服务器在协商阶段已经说SSL,然后你需要使用带有libcurl的FTPS:// URL。

根据您的错误说明,我猜你需要一个FTPS:// URL。