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.