如何避免lftp证书validation错误?

我试图让我的鹈鹕博客工作。 它使用lftp将实际的博客转移到一个服务器,但我总是得到一个错误:

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

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


这是Pelican的Makefile中的代码:

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

在terminal呈现为:

  lftp ftp://[email protected] -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit" 

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

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

由于我的错误实现,我正确地login了( lftp [email protected]:~> ),但是一行function不起作用,我必须手动input镜像命令:

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

这工作没有错误和超时。 问题是如何用一个class轮来做到这一点。


另外我试过了:

  • set ssl:verify-certificate/ftp.myblog.com no
  • 这个技巧来禁用lftp中的证书validation:

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

但是,我的lftp目录中似乎没有“rc”文件夹 – 所以这个提示没有机会工作。

从手册:

-c命令
执行给定的命令并退出。 命令可以用分号( ; ),AND( && )或OR( || )分隔。 记得在shell中正确引用命令参数。 这个选项必须单独使用,没有其他参数。

所以你想要把这些命令指定为一个单独的参数,用分号隔开:

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

实际上可以省略quit命令并使用-c而不是-e

我有一个类似的问题,虽然我的lftp有(Fedora RPM)编译的ssl支持。 ssl:verify-certificate false为我做了诡计。

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

将解决问题,如果你不想要检查证书

ssl:verfy-certificate false对我不起作用,当“build立数据连接”时,我正在收到一个超时错误。

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

我也遇到类似的SSL证书validation错误。 设置validation证书为“否”为我工作。

例:

lftp -c'set ftps:initial-prot“”; 设置ftp:ssl-force true; 设置ftp:ssl-protect-data true; 设置ssl:verify-certificate no; 打开-u用户名,密码208.82.204.46; 把上传文件名;“

另外我试过了:

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

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

我已阅读手册页,并find解决办法。 创build文件

 ~/.lftp/rc 

并添加下一行:

 set ssl:check-hostname false;