如何避免lftp证书验证错误?


46

我正在尝试让我的Pelican博客正常工作。它使用lftp将实际的博客传输到服务器,但是我总是收到错误消息:

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

我认为lftp正在检查SSL,而Pelican的快速设置只是忘记包含我的FTP上没有SSL。


这是鹈鹕的Makefile中的代码:

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

在终端中显示为:

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

到目前为止,我所管理的是通过将Makefile更改为来拒绝SSL检查:

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

由于实施不正确,我无法正确登录(lftp username@myblog.com:~>),但单行功能不再起作用,我必须手动输入mirror命令:

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

这可以正常工作,没有错误和超时。问题是如何使用一根衬管来执行此操作。


另外我尝试了:

  • set ssl:verify-certificate/ftp.myblog.com no
  • 在lftp中禁用证书验证的技巧

    $ cat〜/ .lftp / rc设置ssl:verify-certificate否

但是,我的lftp目录中似乎没有“ rc”文件夹-因此此提示没有任何作用。


1
~/.lftprc 是一个文件
Mausy5043

Answers:


42

联机帮助页

-c命令
执行给定命令并退出。可以使用分号(;),AND(&&)或OR(||)分隔命令。请记住在外壳程序中正确引用命令参数。此选项必须单独使用,不能使用其他参数。

因此,您想将命令指定为单个参数,以分号分隔:

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

实际上,您可以省略该quit命令并使用-c代替-e


那很棒。万分感谢。我曾希望比我更有经验的人能够立即发现我的失败(-我也尝试了-c的建议,但没有放弃,但这对我没有用。无论如何我还是很高兴的)。
帕特里克

34

我有一个类似的问题,尽管我的lftp确实在(Fedora RPM)中编译了ssl支持。 ssl:verify-certificate false为我做了把戏。


11
基于此,请set ssl:verify-certificate false输入我自己~/.lftprc解决的问题。
Nicolas Raoul 2015年

5
…尽管这打破了使用SSL的观点,但是您的lftp现在很高兴地接受它所提供的任何证书,从而使您容易受到M2M攻击。
频谱

1
如果证书未正确验证,则可能的原因是lftp找不到系统的CA证书。请参阅此答案以获取修复。
ingomueller.net

19

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

如果您不希望检查证书,将解决问题


2
这仍然会禁用SSL证书的验证,这使得中间人攻击成为可能。要获得更好的解决方案,请参见此答案
ingomueller.net

3
最好只set ssl:verify-certificate no在lftp shell中执行以为当前会话禁用临时而不是始终禁用。仍然为解决方案+1。
akostadinov

8

ssl:verfy-certificate false 不适用于我,“建立数据连接”时出现超时错误。

我按照这些说明添加set ftp:ssl-allow false~/.lftprc文件。


3
您运行命令时拼写正确吗?SSL:验证证书假
马尔科姆·默多克

5

另外我尝试了:

  • 设置ssl:verify-certificate / ftp.myblog.com否
  • 招在lftp的禁用证书验证:

$ cat〜/ .lftp / rc设置ssl:verify-certificate否

尝试使用set ftp:ssl-allow no;对我来说,它就像是一种魅力。


1
这是最合适的选择。全局设置是一个错误的选择,因为在可能的情况下使用证书验证是合理的,并且通过设置全局选项,它将永远不会尝试验证证书。您可以使用脚本文件lftp -f <script>,并将此命令放在open命令之前。
kmcguire '16

set ssl:verify-certificate no我认为最好是因为交易仍然安全。set ftp:ssl-allow no将交流纯文本
michalzuber

4

我还面临类似的SSL证书验证错误。将verify-certificate设置为“ no”对我有用。

例:

lftp -c'设置ftps:initial-prot“”; 设置ftp:ssl-force true; 将ftp:ssl-protect-data设置为true;设置ssl:verify-certificate否;打开-u Usename,密码208.82.204.46; 放上载文件名;'


3

我已经阅读了手册页并找到了解决方案。建立档案

~/.lftp/rc

并添加下一行:

set ssl:check-hostname false;

1

需要lftp命令: set ftp:ssl-allow no;

您可以在选择后立即执行命令:

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

或将命令保存到中~/.lftprc


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

为我解决了这个问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.