5

Как я могу сохранить сертификат для использования с lftp?

Данный сертификат не принимается lftp при загрузке с сервера. Я старался

openssl s_client -connect {HOSTNAME}:21 -showcerts

Как сохранить сертификат SSL удаленного сервера локально в виде файла, но это возвращает

ПОДКЛЮЧЕНО (00000003)3074045628: ошибка: 140770FC: процедуры SSL: SSL23_GET_SERVER_HELLO: неизвестный протокол: s23_clnt.c: 766:

нет сертификата сверстника

Я соединяюсь с

lftp -p 21 -u {USER} {HOSTNAME}

и получить

ls: Fatal error: Certificate verification: Not trusted

3 ответа3

8

Я думаю, что проблема здесь в том, что FTP-сервер использует обычный FTP, но поддерживает явный SSL/TLS. Таким образом, чтобы следовать протоколу, клиент должен подключиться к FTP-серверу и запустить шифрование с помощью команды AUTH. (Команда AUTH отправляется в виде простого текста)

Поэтому, чтобы ответить на ваш вопрос, я не думаю, что можно показать сертификат. Если только вы не можете каким-то образом отправить команду AUTH на FTP-сервер.

Изменить: Для отображения сертификатов выполните следующие действия:

openssl s_client -connect xxxx:21 -starttls ftp

3

Похоже, что lftp неправильно настроен во многих системах, что делает невозможным проверку сертификатов сервера. Может быть, это основная причина вашей проблемы.

В Интернете полно предложений, как это исправить, отключив проверку сертификата или шифрование. Это небезопасно, поскольку позволяет атакам типа «человек посередине» пройти незамеченным.

Лучшее решение - правильно настроить проверку сертификата, что, к счастью, просто. Для этого добавьте следующую строку в /etc/lftp.conf (или, альтернативно, ~/.lftp/rc):

set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"

ca-certificates.crt - это файл, который содержит все сертификаты CA системы. Местоположение, использованное выше, является тем из Ubuntu и может отличаться в разных системах. Чтобы сгенерировать или обновить файл, запустите update-ca-certificates:

sudo update-ca-certificates

Если в вашей системе нет этой команды, вы можете создать ее вручную следующим образом:

cat /etc/ssl/certs/*.pem | sudo tee /etc/ssl/certs/ca-certificates.crt > /dev/null
2

Вы уверены, что эта конечная точка правильно защищена с помощью SSL? Из сообщения об ошибке вы видите, что сервер не предоставляет ssl? Также порт 21 в основном используется для обычного FTP, а не для FTP или SFTP.

Это то, что я получаю, когда запускаю команду на обычном FTP-сервере.

openssl s_client -connect xxx.yyy.zzz.www:21 -showcerts
CONNECTED(00000003)
140165093090976:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:749:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 225 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE

Ошибка lftp может быть из-за неправильной конфигурации lftp, где вам требуется ssl. Вы можете попробовать следующее:

set ftp:ssl-force false

В любом случае вы также можете попробовать подключиться с помощью

set ssl:verify-certificate no

Хотя это приемлемо только для тестирования и с тестовыми учетными записями (чтобы не пропускать учетные данные)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .