Wie vermeide ich einen Fehler bei der Überprüfung des LFTP-Zertifikats?

46

Ich versuche mein Pelican Blog zum Laufen zu bringen. Es verwendet LFTP, um das eigentliche Blog auf einen Server zu übertragen, aber ich erhalte immer eine Fehlermeldung:

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

Ich denke, LFTP überprüft SSL und die schnelle Einrichtung von Pelican hat nur vergessen, dass ich kein SSL auf meinem FTP habe.


Dies ist der Code in Pelicans Makefile:

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

was im Terminal wiedergegeben wird als:

    lftp ftp://[email protected] -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"

Was ich bisher geschafft habe, ist, die SSL-Prüfung zu verweigern, indem ich das Makefile ändere in:

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

Aufgrund meiner fehlerhaften Implementierung werde ich korrekt angemeldet ( lftp [email protected]:~>), aber die Einzeilenfunktion funktioniert nicht mehr und ich muss den Spiegelbefehl manuell eingeben:

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

Dies funktioniert ohne Fehler und Timeout. Die Frage ist, wie man das mit einem Einzeiler macht.


Außerdem habe ich versucht:

  • set ssl:verify-certificate/ftp.myblog.com no
  • Dieser Trick , um die Zertifikatüberprüfung in lftp zu deaktivieren:

    $ cat ~ / .lftp / rc set ssl: Bestätigungszertifikat-Nr

Es scheint jedoch, dass sich kein "rc" -Ordner in meinem LFTP-Verzeichnis befindet - daher hat diese Eingabeaufforderung keine Chance zu funktionieren.

Patrick
quelle
1
~/.lftprc ist eine Datei
Mausy5043

Antworten:

42

Aus der Manpage :

-c Befehle
Führe die angegebenen Befehle aus und beende das Programm. Befehle können mit einem Semikolon ( ;), AND ( &&) oder OR ( ||) getrennt werden. Denken Sie daran, das Befehlsargument in der Shell korrekt in Anführungszeichen zu setzen. Diese Option muss alleine ohne andere Argumente verwendet werden.

Sie möchten also die Befehle als ein einzelnes Argument, durch Semikolons getrennt, angeben:

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

Sie können den quitBefehl auch weglassen und -cstattdessen verwenden -e.

mgorven
quelle
Das ist großartig. Danke vielmals. Ich hatte gehofft, dass jemand, der erfahrener ist als ich, mein Versagen sofort bemerken würde (- Ich habe auch Ihren Vorschlag ausprobiert, die Beendigung auszulassen, aber das hat bei mir nicht funktioniert. Ich bin trotzdem glücklich).
Patrick
34

Ich hatte ein ähnliches Problem, obwohl mein LFTP SSL-Unterstützung in (Fedora RPM) kompiliert hat. ssl:verify-certificate falsehat den Trick für mich getan.

Dr. Kenneth Noisewater
quelle
11
Darauf aufbauend löste set ssl:verify-certificate falseich ~/.lftprcdas Problem für mich.
Nicolas Raoul
5
… Obwohl dies den Sinn der Verwendung von SSL zunichte macht, akzeptiert Ihr LFTP nun glücklich jedes Zertifikat, das es präsentiert, was Sie für M2M-Angriffe anfällig macht.
Spektren
1
Wenn Zertifikate nicht ordnungsgemäß validiert werden, liegt das wahrscheinlich daran, dass lftp die CA-Zertifikate Ihres Systems nicht findet. In dieser Antwort finden Sie eine Lösung.
ingomueller.net
19

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

wird das Problem lösen, wenn das Zertifikat nicht überprüft werden soll

Philippe Gachoud
quelle
2
Dadurch wird die Überprüfung von SSL-Zertifikaten weiterhin deaktiviert und Man-in-the-Middle-Angriffe möglich. Eine bessere Lösung finden Sie in dieser Antwort .
ingomueller.net
3
Es ist besser, nur set ssl:verify-certificate noin der LFTP-Shell auszuführen , um temporär für die aktuelle Sitzung zu deaktivieren, als immer zu deaktivieren. Noch +1 für die Lösung.
Akostadinov
8

ssl:verfy-certificate false hat bei mir nicht funktioniert, beim "Herstellen einer Datenverbindung" trat ein Timeout-Fehler auf.

Ich folgte diesen Anweisungen, indem ich set ftp:ssl-allow falsezu meiner ~/.lftprcDatei hinzufügte .

Desmillicious
quelle
3
Hast du es richtig geschrieben, als du den Befehl ausgeführt hast? SSL: Verify-Certificate false
Malcolm Murdoch
5

Außerdem habe ich versucht:

  • setze ssl: verify-certificate / ftp.myblog.com no
  • Dieser Trick, um die Zertifikatüberprüfung in lftp zu deaktivieren:

$ cat ~ / .lftp / rc set ssl: Bestätigungszertifikat-Nr

Versuchen Sie es mit set ftp:ssl-allow no; es wirkte wie ein Zauber für mich.

Lucas Farias
quelle
1
Dies ist die am besten geeignete Wahl. Die globale Einstellung ist eine schlechte Wahl, da es sinnvoll ist, die Zertifikatüberprüfung zu verwenden, wenn dies möglich ist. Wenn Sie die globale Option festlegen, wird niemals versucht, das Zertifikat zu überprüfen. Sie können eine Skriptdatei verwenden lftp -f <script>und diesen Befehl vor dem Befehl open einfügen.
kmcguire
set ssl:verify-certificate noist meiner meinung nach besser, da die transaktion gesichert bleibt. set ftp:ssl-allow nowird Klartext kommunizieren
michalzuber
4

Ich war auch mit einer ähnlichen Art von SSL-Zertifikat-Überprüfungsfehler konfrontiert. Das Setzen des Verifizierungszertifikats auf "Nein" hat bei mir funktioniert.

Beispiel:

lftp -c 'setze ftps: initial-prot ""; set ftp: ssl-force true; set ftp: ssl-protect-data true; setze ssl: verify-certificate no; Öffnen Sie -u Benutzername, Kennwort 208.82.204.46; Geben Sie den Upload-Dateinamen ein. '

Pritam
quelle
3

Ich habe Manpages gelesen und eine Lösung gefunden. Erstelle Datei

~/.lftp/rc

und füge dort die nächste Zeile hinzu:

set ssl:check-hostname false;
andrey - k
quelle
1

Benötigen Sie den Befehl lftp: set ftp:ssl-allow no;

Sie können den Befehl ausführen, nachdem Sie Folgendes ausgewählt haben:

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

oder speichern Sie den Befehl in ~/.lftprc.

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

behebt das Problem für mich

ri825170
quelle