我正在努力鹈鹕博客正常工作。它使用 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"
在终端上显示为:
lftp ftp://[email protected] -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 [email protected]:~>
mirror -R /Volumes/HD/Users/me/Test/output/ /myblog_directory
这项工作不会出现错误和超时。问题是如何用一行代码来实现这一点。
此外我还尝试过:
set ssl:verify-certificate/ftp.myblog.com no
这个技巧在 lftp 中禁用证书验证:
$ cat ~/.lftp/rc 设置 ssl:验证证书否
但是,我的 lftp 目录中似乎没有“rc”文件夹 - 所以这个提示没有机会起作用。
答案1
来自手册页:
-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
。
答案2
我遇到了类似的问题,尽管我的 lftp 确实在 (Fedora RPM) 中编译了 ssl 支持。 ssl:verify-certificate false
这对我有用。
答案3
无需证书检查
echo "set ssl:verify-certificate no" >> ~/.lftp/rc
会解决问题,如果你不想需要检查的证书
带证书的安全解决方案是
使用 lftp 一步步对我有用的是:
- 获取证书的主机
openssl s_client -connect <ftp_hostname>:21 -starttls ftp
,在结果的开头我得到了类似的-----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE-----
- 复制那
-----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE-----
进入/etc/ssl/certs/ca-certificates.crt
- 进入lftp 配置引用此证书文件添加到
/etc/lftp.conf
系统范围set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"
- 然后进行同步或其他操作
lftp
,我的情况是lftp -u "${FTP_USER},${FTP_PWD}" ${FTP_HOST} -e "set net:timeout 10;mirror ${EXCLUDES} -R ${LOCAL_SOURCE_PATH} ${REMOTE_DEST_PATH} ; quit"
答案4
我也遇到了类似的 SSL 证书验证错误。将 verify-certificate 设置为“no”对我来说有效。
例子:
lftp -c '设置 ftps:initial-prot“”; 设置 ftp:ssl-force true; 设置 ftp:ssl-protect-data true;设置 ssl:验证证书编号;open -u 用户名,密码 208.82.204.46; put uploadfilename;'