Jak uniknąć błędu weryfikacji certyfikatu lftp?


46

Próbuję uruchomić mojego bloga Pelikana . Używa lftp do przeniesienia aktualnego bloga na serwer, ale zawsze pojawia się błąd:

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

Myślę, że lftp sprawdza SSL, a szybka konfiguracja Pelikana po prostu zapomniała dodać, że nie mam SSL na moim FTP.


Oto kod w Makefile Pelikana:

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

który renderuje się w terminalu jako:

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

Do tej pory zarządzałem, odmawiając sprawdzenia SSL, zmieniając Makefile na:

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

Z powodu mojej niepoprawnej implementacji loguję się poprawnie ( lftp username@myblog.com:~>), ale funkcja jednowierszowa już nie działa i muszę ręcznie wprowadzić polecenie dublowania:

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

Działa to bez błędu i limitu czasu. Pytanie brzmi, jak to zrobić za pomocą jednej wkładki.


Ponadto próbowałem:

  • set ssl:verify-certificate/ftp.myblog.com no
  • Ta sztuczka, aby wyłączyć weryfikację certyfikatu w lftp:

    $ cat ~ / .lftp / rc set ssl: numer-certyfikatu weryfikacyjnego

Wygląda jednak na to, że w moim katalogu lftp nie ma folderu „rc” - więc ten monit nie ma szans na zadziałanie.


1
~/.lftprc jest plikiem
Mausy5043

Odpowiedzi:


42

Z strony podręcznika :

-c polecenia
Wykonaj podane polecenia i wyjdź. Polecenia można oddzielić średnikiem ( ;), AND ( &&) lub OR ( ||). Pamiętaj, aby poprawnie podać argument polecenia w powłoce. Z tej opcji należy korzystać samodzielnie, bez innych argumentów.

Więc chcesz podać polecenia jako pojedynczy argument oddzielony średnikami:

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

Możesz faktycznie pominąć quitpolecenie i użyć -czamiast -e.


To wspaniale. Wielkie dzięki. Miałem nadzieję, że ktoś, kto jest bardziej doświadczony ode mnie, natychmiast zauważy moją porażkę (- spróbowałem również twojej sugestii -c, pomijając rezygnację, ale to nie działało dla mnie. I tak jestem szczęśliwy).
Patrick

34

Miałem podobny problem, chociaż moja lftp ma skompilowaną obsługę ssl (Fedora RPM). ssl:verify-certificate falsezrobił dla mnie lewę.


11
Na tej podstawie postawiłem set ssl:verify-certificate falseswój ~/.lftprcrozwiązany problem.
Nicolas Raoul,

5
… Choć to nie wystarcza, by używać protokołu SSL, dlatego lftp z radością akceptuje każdy otrzymany certyfikat, co czyni cię podatnym na ataki M2M.
widma

1
Jeśli certyfikaty nie zostaną poprawnie sprawdzone, prawdopodobną przyczyną jest to, że lftp nie znajduje certyfikatów CA twojego systemu. Zobacz tę odpowiedź, aby uzyskać poprawkę.
ingomueller.net

19

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

rozwiąże problem, jeśli nie chcesz, aby certyfikat był sprawdzany


2
Nadal wyłącza to weryfikację certyfikatów SSL i umożliwia ataki typu man-in-the-middle. Aby uzyskać lepszą poprawkę, zobacz tę odpowiedź .
ingomueller.net

3
lepiej po prostu uruchom set ssl:verify-certificate now powłoce lftp, aby wyłączyć tymczasową dla bieżącej sesji, niż zawsze. Nadal +1 za rozwiązanie.
akostadinov

8

ssl:verfy-certificate false nie działało dla mnie, pojawiał się błąd przekroczenia limitu czasu podczas „nawiązywania połączenia danych”.

Postępowałem zgodnie z tymi instrukcjami, dodając set ftp:ssl-allow falsedo mojego ~/.lftprcpliku.


3
Czy przeliterowałeś to poprawnie po uruchomieniu polecenia? ssl: Verify-certificate false
Malcolm Murdoch

5

Ponadto próbowałem:

  • ustaw ssl: Verify-certificate / ftp.myblog.com no
  • Ta sztuczka, aby wyłączyć weryfikację certyfikatu w lftp:

$ cat ~ / .lftp / rc set ssl: numer-certyfikatu weryfikacyjnego

Spróbuj użyć set ftp:ssl-allow no; działało to dla mnie jak urok.


1
To najbardziej odpowiedni wybór. Ustawienie globalne jest złym wyborem, ponieważ uzasadnione jest użycie weryfikacji certyfikatu, gdy jest to możliwe, a ustawienie opcji globalnej nigdy nie będzie próbowało zweryfikować certyfikatu. Możesz użyć pliku skryptu lftp -f <script>i umieścić to polecenie przed poleceniem open.
kmcguire

set ssl:verify-certificate nomyślę, że lepiej, ponieważ transakcja pozostaje zabezpieczona. set ftp:ssl-allow noprzekaże zwykły tekst
michalzuber

4

Napotkałem również podobny błąd związany z weryfikacją certyfikatu ssl. Ustawienie certyfikatu weryfikacyjnego na „nie” działało dla mnie.

Przykład:

lftp -c 'ustaw ftps: initial-prot ""; ustaw ftp: ssl-force true; ustaw ftp: ssl-protect-data true; ustaw ssl: numer-certyfikatu-weryfikacji; otwórz -u nazwa użytkownika, hasło 208.82.204.46; wstaw uploadfilename; '


3

Przeczytałem strony podręcznika man i znalazłem rozwiązanie. Utwórz plik

~/.lftp/rc

i dodaj tam następną linię:

set ssl:check-hostname false;

1

Potrzebujesz polecenia lftp: set ftp:ssl-allow no;

Możesz wykonać polecenie zaraz po wybraniu:

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

lub zapisz polecenie w ~/.lftprc.


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

naprawiono problem dla mnie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.