Come evitare l'errore di verifica del certificato lftp?


46

Sto cercando di far funzionare il mio blog Pelican . Usa lftp per trasferire il blog effettivo sul proprio server, ma ricevo sempre un errore:

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

Penso che lftp stia controllando SSL e la rapida configurazione di Pelican abbia appena dimenticato di includere che non ho SSL sul mio FTP.


Questo è il codice nel Makefile di Pelican:

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

che rende nel terminale come:

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

Ciò che ho gestito finora è, negando il controllo SSL modificando il Makefile in:

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

A causa della mia errata implementazione ottengo il login corretto ( lftp username@myblog.com:~>) ma la funzione di una riga non funziona più e devo inserire il comando mirror a mano:

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

Funziona senza errori e timeout. La domanda è: come fare questo con una fodera.


Inoltre ho provato:

  • set ssl:verify-certificate/ftp.myblog.com no
  • Questo trucco per disabilitare la verifica del certificato in lftp:

    $ cat ~ / .lftp / rc set ssl: verifica-certificato n

Tuttavia, sembra che non ci sia una cartella "rc" nella mia directory lftp - quindi questo prompt non ha alcuna possibilità di funzionare.


1
~/.lftprc è un file
Mausy5043,

Risposte:


42

Dalla manpage :

-c comandi
Esegue i comandi dati ed esce. I comandi possono essere separati con un punto e virgola ( ;), AND ( &&) o OR ( ||). Ricorda di citare correttamente l'argomento comandi nella shell. Questa opzione deve essere utilizzata da sola senza altri argomenti.

Quindi vuoi specificare i comandi come singolo argomento, separati da punti e virgola:

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

Puoi effettivamente omettere il quitcomando e usare -cinvece di -e.


È fantastico. Grazie mille. Avevo sperato che qualcuno che fosse più esperto di me potesse individuare il mio fallimento all'istante (- Ho anche provato il tuo suggerimento -c tralasciando la chiusura, ma questo non ha funzionato per me. Sono comunque felice).
patrick,

34

Ho avuto un problema simile, anche se il mio lftp ha compilato il supporto ssl (Fedora RPM). ssl:verify-certificate falseha fatto il trucco per me.


11
Sulla base di questo, mettendo set ssl:verify-certificate falsea mio ~/.lftprcrisolto il problema per me.
Nicolas Raoul,

5
... anche se questo sconfigge il punto di usare SSL, ora lftp accetta felicemente qualsiasi certificato venga presentato, rendendoti vulnerabile agli attacchi M2M.
extra

1
Se i certificati non sono validati correttamente, una causa probabile è che lftp non trova i certificati CA del sistema. Vedi questa risposta per una correzione.
ingomueller.net,

19

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

risolverà il problema se non si desidera verificare il certificato


2
Ciò disabilita ancora la verifica dei certificati SSL e rende possibili attacchi man-in-the-middle. Per una soluzione migliore, vedi questa risposta .
ingomueller.net,

3
meglio eseguire semplicemente set ssl:verify-certificate nonella shell lftp per disabilitare temporaneamente la sessione corrente piuttosto che disabilitare sempre. Ancora +1 per la soluzione.
Akostadinov,

8

ssl:verfy-certificate false non ha funzionato per me, ho riscontrato un errore di timeout durante "la connessione dati".

Ho seguito queste istruzioni aggiungendole set ftp:ssl-allow falseal mio ~/.lftprcfile.


3
L'hai scritto correttamente quando hai eseguito il comando? ssl: confirm-certificate false
Malcolm Murdoch,

5

Inoltre ho provato:

  • set ssl: verifica-certificato / ftp.myblog.com n
  • Questo trucco per disabilitare la verifica del certificato in lftp:

$ cat ~ / .lftp / rc set ssl: verifica-certificato n

Prova a usare set ftp:ssl-allow no; ha funzionato come un incanto per me.


1
Questa è la scelta più appropriata. L'impostazione globale è una scelta sbagliata in quanto è ragionevole utilizzare la verifica del certificato quando possibile e impostando l'opzione globale non tenterà mai di verificare il certificato. È possibile utilizzare un file di script lftp -f <script>e posizionare questo comando prima del comando open.
kmcguire,

set ssl:verify-certificate noè meglio penso perché la transazione rimane protetta. set ftp:ssl-allow nocomunicherà in chiaro
michalzuber l'

4

Stavo anche affrontando un simile errore di verifica del certificato SSL. L'impostazione del certificato di verifica su "no" ha funzionato per me.

Esempio:

lftp -c 'set ftps: initial-prot ""; imposta ftp: ssl-force true; imposta ftp: ssl-protect-data true; set ssl: verifica-certificato no; open -u Nome utente, password 208.82.204.46; inserisci uploadfilename; '


3

Ho letto le pagine man e ho trovato la soluzione. Crea file

~/.lftp/rc

e aggiungi la riga successiva:

set ssl:check-hostname false;

1

È necessario il comando lftp: set ftp:ssl-allow no;

È possibile eseguire il comando subito dopo aver selezionato:

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

o salva il comando in ~/.lftprc.


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

risolto il problema per me

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.