如何使用 TLS 在 Windows 10 命令提示符中为 FTP 构建 CURL FTPS 命令

How to construct CURL FTPS command in Windows 10 Command Prompt for FTP with TLS

我在 Windows 10 Professional Plus 我在 DOS 中有一个 CURL 命令,它适用于端口 21 上的标准 FTP 进入文件夹 C:\Program Files\cURL\bin> 后,我发出命令:

curl -v -T (C:\folders\file_to_be_transferred.pdf) ftp://(username):(password)@(host.top_level_domain.com)/file_to_be_transferred.pdf

我正在尝试使用 FTP 通过 TLS 传输文件。当我将 FTP 更改为 FTPS 并将命令更改为:

curl -v -T (C:\folders\file_to_be_transferred.pdf) ftps://(username):(password)@(host.top_level_domain.com)/file_to_be_transferred.pdf

我从 CURL 得到以下响应:

* Hostname was NOT found in DNS cache
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 999.999.999.999...
* Connected to host.top_level_domain.com (999.999.999.999) port 21 (#0)
* successfully set certificate verify locations:
*   CAfile: C:\Program Files\cURL\bin\curl-ca-bundle.crt
  CApath: none
* SSLv3, TLS handshake, Client hello (1):
} [data not shown]
* error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
* Closing connection 0
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

当我使用 CURL -V 请求 CURL 版本时,我得到以下响应:

curl 7.39.0 (x86_64-pc-win32) libcurl/7.39.0 OpenSSL/1.0.1g zlib/1.2.8 WinIDN libssh2/1.4.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtsp scp sftp smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile SSPI SPNEGO NTLM SSL libz

如何在 Windows 10 上使用 CURL 在 FTP 上启用 TLS? 感谢您观看此内容。

我解决了这个问题。这就是我引用证书的方式。早些时候我已经将 FileZilla 服务器 (certificate.crt) 生成的证书传输到 Windows 客户端。我将该证书文件放在文件夹 C:\Program Files\cURL\bin 中。此外,我复制了 certificate.crt 的内容并将其附加到名为 curl-ca-bundle.crt 的现有证书中。将新证书附加到该捆绑文件非常重要。那是我的问题。现在,当我在客户端的 CURL 命令中仅引用 FileZilla_Server 生成的证书时,传输工作正常。似乎 cURL 除了在命令行中引用的内容外,还将始终引用 curl-ca-bundle.crt 文件。日志引用了 SSLv3 握手的详细信息。我还稍微调整了命令的结构,使其更具可读性。这是:

curl --user username:password --cert "C:\Program Files\cURL\bin\certificate.crt" -v -T C:\folder_and_file_to_be_transferred.pdf ftps://host.top_level_domain.com/filename.pdf

顺便说一句,FTPS的默认端口是990。在路由器上我不得不开放990端口,端口范围是20101-20120。因为我使用的是 ftpS,所以我不必打开端口 21。 我希望这对其他人有帮助。