Як уникнути помилки підтвердження lftp сертифікату?


46

Я намагаюся, щоб мій блог Pelican працював. Він використовує lftp для передачі фактичного блогу на один сервер, але я завжди отримую помилку:

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

Я думаю, що lftp перевіряє SSL, а швидке налаштування Pelican просто забув включити, що у мене на FTP немає SSL.


Це код у 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 -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, щоб відмовитися, але це не спрацювало для мене. Я все одно щасливий).
патрік

34

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


11
Виходячи з цього, поклавши set ssl:verify-certificate falseв моїх ~/.lftprcрозв'язуваних проблемах для мене.
Nicolas Raoul

5
... хоча це перемагає сенс використання SSL, ваш lftp тепер радісно приймає будь-який сертифікат, який він буде представлений, що робить вас вразливим до атак M2M.
спектри

1
Якщо сертифікати не підтверджені належним чином, ймовірною причиною є те, що lftp не знайде сертифікатів ЦС вашої системи. Дивіться цю відповідь для виправлення.
ingomueller.net

19

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: підтвердити-сертифікат / ftp.myblog.com ні
  • Цей трюк, щоб вимкнути перевірку сертифікатів у lftp:

$ cat ~ / .lftp / rc set ssl: підтвердження-ні

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


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

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

4

Я також зіткнувся з подібною помилкою підтвердження ssl сертифікату. Налаштування підтвердження-сертифікату на "ні" працювало для мене.

Приклад:

lftp -c 'встановити ftps: Initial-prot ""; встановити ftp: ssl-сила true; встановити ftp: ssl-protection-data true; set ssl: підтвердження-сертифікат немає; відкрити -у 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.