82 votes

Comment éviter l'erreur de vérification du certificat lftp ?

J'essaie de faire en sorte que mon Blog du Pélican de travail. Il utilise lftp pour transférer le blog actuel sur son serveur, mais j'obtiens toujours une erreur :

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

Je pense que lftp vérifie le SSL et la configuration rapide de Pelican a juste oublié d'inclure que je n'ai pas de SSL sur mon FTP.


C'est le code dans le Makefile de Pelican :

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

qui se traduit en terminal par :

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

Ce que j'ai réussi à faire jusqu'à présent est de refuser la vérification SSL en changeant le Makefile en :

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

En raison de mon implémentation incorrecte, je suis connecté correctement ( lftp username@myblog.com:~> ) mais la fonctionnalité de ligne unique ne fonctionne plus et je dois entrer la commande miroir à la main :

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

Cela fonctionne sans erreur ni délai d'attente. La question est de savoir comment faire cela avec un one liner.


En outre, j'ai essayé :

  • set ssl:verify-certificate/ftp.myblog.com no
  • Cette astuce pour désactiver la vérification des certificats dans lftp :

    $ cat ~/.lftp/rc set ssl:verify-certificate no

Cependant, il semble qu'il n'y ait pas de dossier "rc" dans mon répertoire lftp - donc cette invite n'a aucune chance de fonctionner.

63voto

mgorven Points 29736

De la page d'accueil :

-c commandes
Exécuter les commandes données et quitter. Les commandes peuvent être séparées par un point-virgule ( ; ), ET ( && ) ou OR ( || ). N'oubliez pas de citer correctement l'argument des commandes dans le Shell. Cette option doit être utilisée seule sans autres arguments.

Vous voulez donc spécifier les commandes comme un seul argument, séparé par des points-virgules :

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

Vous pouvez en fait omettre le quit et utiliser la commande -c au lieu de -e .

56voto

J'ai eu un problème similaire, bien que mon lftp ait le support ssl compilé (Fedora RPM). ssl:verify-certificate false a fait l'affaire pour moi.

41voto

Philippe Gachoud Points 1417

Pas de vérification du certificat

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

résoudra le problème si vous ne veut pas le certificat à vérifier

La solution sécurisée avec certificat est

Ce qui a fonctionné pour moi étape par étape avec lftp :

  1. obtenir un certificat de l'hôte avec openssl s_client -connect <ftp_hostname>:21 -starttls ftp au début du résultat, j'ai obtenu quelque chose comme -----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE-----
  2. copie que -----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE----- en /etc/ssl/certs/ca-certificates.crt
  3. Sur Configuration lftp référencer ce fichier de certificat en ajoutant à /etc/lftp.conf pour l'ensemble du système set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"
  4. et ensuite faire votre synchronisation ou autre avec lftp Dans mon cas, c'est lftp -u "${FTP_USER},${FTP_PWD}" ${FTP_HOST} -e "set net:timeout 10;mirror ${EXCLUDES} -R ${LOCAL_SOURCE_PATH} ${REMOTE_DEST_PATH} ; quit"

9voto

desmillicious Points 91

ssl:verfy-certificate false n'a pas fonctionné pour moi, j'obtenais une erreur de timeout lors de la "connexion des données".

J'ai suivi ces en ajoutant set ftp:ssl-allow false à mon ~/.lftprc Datei.

8voto

Maximilian Krause Points 103

J'étais également confronté à une erreur similaire de vérification du certificat SSL. Le réglage de verify-certificate sur 'no' a fonctionné pour moi.

Ejemplo:

lftp -c 'set ftps:initial-prot "" ; set ftp:ssl-force true ; set ftp:ssl-protect-data true ; set ssl:verify-certificate no ; open -u Usename,Password 208.82.204.46 ; put uploadfilename;'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X