Comment éviter une erreur de vérification du certificat lftp?

46

J'essaie de faire fonctionner mon blog Pelican . Il utilise lftp pour transférer le blog actuel sur son serveur, mais je reçois toujours une erreur:

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

Je pense que LFTP vérifie le protocole SSL et que la configuration rapide de Pelican a simplement oublié d’inclure le fait que je n’ai pas le protocole 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://[email protected] -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"

Ce que j’ai réussi jusqu’à présent, c’est de refuser la vérification SSL en modifiant 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 me connecte correctement ( lftp [email protected]:~>), mais la fonctionnalité une ligne 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 plus j'ai essayé:

  • set ssl:verify-certificate/ftp.myblog.com no
  • Cette astuce pour désactiver la vérification de certificat 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 - cette invite n'a donc aucune chance de fonctionner.

Patrick
la source
1
~/.lftprc est un fichier
Mausy5043

Réponses:

42

De la page de manuel :

Commandes -c
Exécuter les commandes données et quitter. Les commandes peuvent être séparées par un point-virgule ( ;), AND ( &&) 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.

Donc, vous voulez spécifier les commandes en tant qu’argument unique, 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 réellement omettre la quitcommande et l'utiliser à la -cplace de -e.

mgorven
la source
C'est génial. Merci beaucoup. J'avais espéré que quelqu'un qui est plus expérimenté que moi repérerait mon échec instantanément (- j'ai aussi essayé votre suggestion - laisser de côté le renoncement au tabac, mais cela n'a pas fonctionné pour moi. Je suis heureux quand même).
Patrick
34

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

Dr. Kenneth Noisewater
la source
11
Sur cette base, mettre set ssl:verify-certificate falsedans mon ~/.lftprcrésolu le problème pour moi.
Nicolas Raoul
5
… Même si cela fait échec à l'utilisation de SSL, votre lftp accepte maintenant avec plaisir le certificat présenté, vous rendant ainsi vulnérable aux attaques M2M.
spectras
1
Si les certificats ne sont pas correctement validés, il est probable que lftp ne trouve pas les certificats d’autorité de certification de votre système. Voir cette réponse pour un correctif.
ingomueller.net
19

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

résoudra le problème si vous ne voulez pas que le certificat soit vérifié

Philippe Gachoud
la source
2
Cela désactive toujours la vérification des certificats SSL et rend possible les attaques de type homme du milieu. Pour une meilleure solution, voir cette réponse .
ingomueller.net
3
Mieux vaut simplement exécuter set ssl:verify-certificate nodans le shell lftp pour désactiver temporaire pour la session en cours que de toujours désactiver. Encore +1 pour la solution.
akostadinov
8

ssl:verfy-certificate false cela ne fonctionnait pas pour moi, je recevais une erreur de temporisation lors de la "connexion de données".

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

desmillicious
la source
3
Avez-vous orthographié correctement lorsque vous avez exécuté la commande? ssl: verify-certificate false
Malcolm Murdoch
5

En plus j'ai essayé:

  • set ssl: verify-certificate / ftp.myblog.com non
  • Cette astuce pour désactiver la vérification de certificat dans lftp:

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

Essayez d'utiliser set ftp:ssl-allow no; cela a fonctionné comme un charme pour moi.

Lucas Farias
la source
1
C'est le choix le plus approprié. Le paramètre global est un mauvais choix car il est raisonnable d’utiliser la vérification du certificat lorsque cela est possible et en définissant l’option globale, il ne tentera jamais de vérifier le certificat. Vous pouvez utiliser un fichier de script lftp -f <script>et placer cette commande avant la commande open.
kmcguire
set ssl:verify-certificate noc’est mieux je pense car la transaction reste sécurisée. set ftp:ssl-allow nocommuniquera en texte
brut
4

J'étais également confronté au même type d'erreur de vérification de certificat SSL. La définition du certificat de vérification sur «non» a fonctionné pour moi.

Exemple:

lftp -c 'set ftps: initial-prot ""; définissez ftp: ssl-force true; définir ftp: ssl-protect-data true; set ssl: verify-certificate no; open -u Nom d'utilisateur, mot de passe 208.82.204.46; mettez uploadfilename; '

Pritam
la source
3

J'ai lu les pages de manuel et trouvé une solution. Créer un fichier

~/.lftp/rc

et ajouter la ligne suivante:

set ssl:check-hostname false;
andrey - k
la source
1

Besoin de la commande lftp: set ftp:ssl-allow no;

Vous pouvez exécuter la commande juste après avoir sélectionné:

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

ou enregistrez la commande dans ~/.lftprc.

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

résolu le problème pour moi

ri825170
la source