Как избежать ошибки проверки сертификата lftp?


46

Я пытаюсь заставить мой блог Пеликана работать. Он использует lftp для передачи реального блога на сервер, но я всегда получаю сообщение об ошибке:

mirror: Fatal error: Certificate verification: subjectAltName does not match ‘blogname.com’

Я думаю, что lftp проверяет SSL и быстрая настройка Pelican просто забыла включить, что у меня нет SSL на моем FTP.


Это код в Makefile Пеликана:

ftp_upload: $(OUTPUTDIR)/index.html
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

который отображает в терминале как:

    lftp ftp://username@blogname.com -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"

До сих пор мне удавалось запретить проверку SSL, изменив Makefile на:

lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no" "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

Из-за моей неправильной реализации я вошел в систему правильно ( lftp username@myblog.com:~>), но функция с одной строкой больше не работает, и я должен ввести команду mirror вручную:

mirror -R /Volumes/HD/Users/me/Test/output/ /myblog_directory

Это работает без ошибок и тайм-аута. Вопрос в том, как это сделать с одним вкладышем.


Кроме того, я попробовал:

  • set ssl:verify-certificate/ftp.myblog.com no
  • Этот трюк, чтобы отключить проверку сертификата в lftp:

    $ cat ~ / .lftp / rc set ssl: проверять-сертификат №

Тем не менее, похоже, что в моем каталоге lftp нет папки "rc" - поэтому у этой подсказки нет шансов работать.


1
~/.lftprc это файл
Mausy5043

Ответы:


42

Из справочной страницы :

-c команды
Выполнить данные команды и выйти. Команды могут быть разделены точкой с запятой ( ;), AND ( &&) или OR ( ||). Не забудьте правильно указать аргумент команд в оболочке. Эта опция должна использоваться отдельно без других аргументов.

Таким образом, вы хотите указать команды как один аргумент, разделенный точкой с запятой:

lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no; mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

Вы можете опустить quitкоманду и использовать -cвместо -e.


Замечательно. Благодаря тонну. Я надеялся, что кто-то, кто более опытен, чем я, мгновенно обнаружит мою неудачу (- я также попробовал ваше предложение -c, оставив выход, но это не сработало для меня. В любом случае, я счастлив).
Патрик

35

У меня была похожая проблема, хотя на моем lftp скомпилирована поддержка ssl (Fedora RPM). ssl:verify-certificate falseсделал трюк для меня.


11
Исходя из этого, положив set ssl:verify-certificate falseв моих ~/.lftprcрешаемых проблемах для меня.
Николас Рауль

5
… Хотя это лишает смысла использование SSL, теперь ваш lftp с радостью принимает любой сертификат, который он предоставляет, делая вас уязвимыми для атак M2M.
spectras

1
Если сертификаты не проверены должным образом, вероятной причиной является то, что lftp не находит сертификаты CA вашей системы. Смотрите этот ответ для исправления.
ingomueller.net

20

echo "set ssl:verify-certificate no" >> ~/.lftp/rc

решит проблему, если вы не хотите проверять сертификат


2
Это по-прежнему отключает проверку SSL-сертификатов и делает возможными атаки «человек посередине». Для лучшего решения смотрите этот ответ .
ingomueller.net

3
лучше просто выполнить set ssl:verify-certificate noв оболочке lftp, чтобы отключить временную для текущего сеанса, чем всегда отключать. Еще +1 за решение.
Акостадинов

8

ssl:verfy-certificate false у меня не получилось, я получаю ошибку тайм-аута при "подключении к данным".

Я следовал этим инструкциям, добавив set ftp:ssl-allow falseв свой ~/.lftprcфайл.


3
Правильно ли вы написали, когда запускали команду? ssl: верят-сертификат ложный
Малкольм Мердок

5

Кроме того, я попробовал:

  • установить ssl: verify-certificate / ftp.myblog.com нет
  • Этот трюк, чтобы отключить проверку сертификата в lftp:

$ cat ~ / .lftp / rc set ssl: проверять-сертификат №

Попробуйте использовать set ftp:ssl-allow no; это работало как очарование для меня.


1
Это самый подходящий выбор. Глобальный параметр - плохой выбор, так как разумно использовать проверку сертификата, когда это возможно, и, установив глобальный параметр, он никогда не будет пытаться проверить сертификат. Вы можете использовать файл сценария lftp -f <script>и поместить эту команду перед командой open.
kmcguire

set ssl:verify-certificate noЛучше я думаю, потому что сделка остается обеспеченной. set ftp:ssl-allow noбудет общаться открытым текстом
michalzuber

4

Я также столкнулся с подобной ошибкой проверки сертификата ssl. Установка проверки сертификата на «нет» работала для меня.

Пример:

lftp -c 'установить ftps: initial-prot ""; установите ftp: ssl-force true; установите ftp: ssl-protect-data true; set ssl: verify-сертификат №; open -u Usename, пароль 208.82.204.46; положить имя файла загрузки; '


3

Я прочитал справочные страницы и нашел решение. Создать файл

~/.lftp/rc

и добавьте туда следующую строку:

set ssl:check-hostname false;

1

Нужна команда lftp: set ftp:ssl-allow no;

Вы можете выполнить команду только после выбора:

lftp www.yourdomain.com -u username,password -e "set ftp:ssl-allow no;"

или сохраните команду в ~/.lftprc.


0
lftp -u username,password host -e "set ftp:ssl-allow no" 

исправил проблему для меня

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.