Как создать команду CURL FTPS в командной строке Windows 10 для FTP с TLS - PullRequest
0 голосов
/ 06 июня 2019

Я на Windows 10 Professional Plus У меня есть команда CURL в DOS, которая отлично работает для стандартного FTP на порту 21. Как только я в папке 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, используя CURL -V, я получаюследующий ответ:

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

Как включить TLS через FTP с CURL в Windows 10?Спасибо за просмотр.

1 Ответ

0 голосов
/ 07 июня 2019

Я решил проблему.Это было то, как я ссылался на сертификаты.Ранее я передал сертификат, сгенерированный сервером FileZilla (certificate.crt), клиенту Windows.Я поместил этот файл сертификата в папку C: \ Program Files \ cURL \ bin.Кроме того, я скопировал содержимое certificate.crt и добавил его в существующий сертификат curl-ca-bundle.crt.Присоединение нового сертификата к этому пакетному файлу очень важно.Это была моя проблема.Теперь, когда я ссылаюсь только на сгенерированный сертификат FileZilla_Server в клиентской команде CURL, передача работает.Кажется, что 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.Мне НЕ нужно было открывать порт 21, так как я использовал ftpS.Я надеюсь, что это помогает кому-то еще.

...