Отладка соединения curl FTPS с использованием сертификатов аутентификации клиента (OpenSSL)

(Перемещено из StackOverflow) Меня попросили настроить соединение FTPS с использованием сертификата аутентификации клиента. Я клиент, подключающийся к серверу. Я нахожусь на рабочей станции Windows 7 за брандмауэром, хотя это соединение в конечном итоге будет использоваться на выделенной виртуальной машине CentOS. Другая информация:

  • Только TLS 1.2
  • Только пассивный режим
  • Мой IP-адрес WAN занесен в белый список
  • Я подключаюсь к тесту URL, пока
  • Нет исходящего межсетевого экрана (только правила для входящих )
  • Ключ должен быть отправлен в формате PEM

Я купил сертификат в Comodo и сгенерировал сертификат с помощью IE10. Я экспортировал полный сертификат из IE с закрытым ключом и расширенными свойствами в формате .pfx.

Я написал небольшой пакетный файл для извлечения необходимых частей из .pfx, с использованием OpenSSL:

::Extract the private key from the PFX
openssl pkcs12 -in comodo.pfx -nocerts -out encrypted.key
::Extract unencrypted private key
openssl rsa -in encrypted.key -out decrypted.key
::Extract the public cert in Base64 from the PFX
openssl pkcs12 -in comodo.pfx -clcerts -nokeys | openssl x509 -out comodo.cer
::Extract the chain bundle from the PFX
openssl pkcs12 -in comodo.pfx -nodes -nokeys -cacerts | openssl x509 -out comodo.crt

Используя извлеченные ключевые части, я пробовал различные команды curl (v7.46.0) для подключения к серверу FTPS. Соединение продолжает разорваться. Моя последняя попытка ниже. Ошибка почти всегда одна и та же.

curl -3 -k -v --ftp-ssl --tlsv1.2 --ftp-ssl-reqd --ftp-pasv --key decrypted.key --cacert comodo.crt --cert comodo.cer --user REMOVED:REMOVED ftp://ftps.REMOVED/

Пример вывода:

> curl -3 -v -k --user REMOVED:REMOVED --ftp-ssl --tlsv1.2 --ftp-ssl-reqd --ftp-skip-pasv-ip --cert comodo.cer --key priv.pem ftp://ftps.REMOVED/
*   Trying REMOVED_IP.
* Connected to ftps.REMOVED (REMOVED_IP) port 21 (#0)
< 220 Service ready for new user.
> AUTH SSL
< 234 Command AUTH okay; starting SSL connection.
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to ftps.REMOVED:21
* Closing connection 0 curl: (35) Unknown SSL protocol error in connection to ftps.REMOVED:21
>pause
Press any key to continue . . .

Как ни странно, если я подключаюсь к FileZilla, мне может показаться, что я прошел квитирование TLS, но затем я получаю разные ошибки при попытке загрузить файл. Поскольку это соединение в конечном итоге будет установлено с помощью curl, я сконцентрировался на этом подходе.

Я пробовал это более недели. Администратор сервера купил сертификат у моего провайдера и может без проблем подключиться. Я в тупике на этом. Любая помощь будет принята с благодарностью. Также приветствуются общие советы по отладке curl / ftps.

1
задан 15 December 2016 в 12:17
1 ответ

Это оказалось проблемой, не связанной с FTP. Клиентская система позволяла связать только один сертификат CA с одним пользователем, поэтому некоторые из наших фиктивных пользователей препятствовали принятию ключа CA. Тем не менее, спасибо за помощь.

0
ответ дан 4 December 2019 в 05:30

Теги

Похожие вопросы