Назад | Перейти на главную страницу

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

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

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

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


Это код в Makefile Pelican:

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 -R /Volumes/HD/Users/me/Test/output/ /myblog_directory

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


Вдобавок я пробовал:

Однако похоже, что в моем каталоге lftp нет папки «rc», поэтому это приглашение не работает.

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

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

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

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

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

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

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

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

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

Безопасное решение с сертификатом

Что сработало для меня шаг за шагом с lftp:

  1. получить сертификат хозяина с openssl s_client -connect <ftp_hostname>:21 -starttls ftp, в начале результата получилось что-то вроде -----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE-----
  2. копировать который -----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE----- в /etc/ssl/certs/ca-certificates.crt
  3. В конфигурация lftp ссылка на этот файл сертификата добавление в /etc/lftp.conf для всей системы set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"
  4. а затем выполните синхронизацию или что-то еще с lftp, в моем случае это lftp -u "${FTP_USER},${FTP_PWD}" ${FTP_HOST} -e "set net:timeout 10;mirror ${EXCLUDES} -R ${LOCAL_SOURCE_PATH} ${REMOTE_DEST_PATH} ; quit"

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

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

Вдобавок я пробовал:

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

$ cat ~ / .lftp / rc установить ssl: verify-certificate no

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

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

Пример:

lftp -c 'установить ftps: начальный-прот ""; установить ftp: ssl-force true; установить ftp: ssl-protect-data true; установить ssl: verify-certificate no; open -u Имя пользователя, Пароль 208.82.204.46; поместите uploadfilename; '

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

~/.lftp/rc

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

set ssl:check-hostname false;

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

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

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

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

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

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

Решено с помощью этого:

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

пример:

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