![使用 lftp 信任服务器证书](https://linux22.com/image/1585217/%E4%BD%BF%E7%94%A8%20lftp%20%E4%BF%A1%E4%BB%BB%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AF%81%E4%B9%A6.png)
当使用 lftp 连接到服务器时,我遇到以下问题:
Certificate verification: Not trusted: no issuer was found (AA:AA:AA:[...]:AA:AA)
这至少表明证书验证失败。我想将该证书列入白名单。显然,出于安全考虑,禁用证书验证不是一个选择。
以下是我已经尝试过的方法:
- 下列的该指南从服务器检索证书,并将其与 一起使用
set ssl:ca-file
。按照该指南,我有三个证书。我尝试了所有证书,然后将它们连接在一起,但没有任何变化。还尝试了ssl:cert-file
。 - 使用与上述相同的方法
openssl s_client -connect my.server.tld:21 -starttls ftp
,仅生成一个证书 - 设置
ssl:ca-file
为系统的 ca 存储 - 使用gnutls-cli与 -s 选项配合得很好,上面的
openssl s_client
命令也是如此。
就这些命令报告而言,该证书似乎是由有效的信任链签名的。
Filezilla 运行良好,但显示以下警告,可能相关:
服务器发送了未分类的证书链,违反了 TLS 规范
我无法控制该服务器,因为我自己不托管它,但欢迎程序将自己标识为 Pure-FTPd。
其他无法正常工作的客户端(缺乏对 ftps 或特定服务器的支持)ftp
:ncftp
,,,,,,dolphin (KIO)
curlftpfs
tnftp
firefox
答案1
一年后唯一的解决方案仍然是关闭特定证书指纹的 ssl:verify-certificate。
set ssl:verify-certificate/{fingerprint1} no
set ssl:verify-certificate/{fingerprint2} no
请参阅 lftp 关闭问题 214 --https://github.com/lavv17/lftp/issues/214#issuecomment-197237482
答案2
使用 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"
答案3
解决办法是全部使用以下命令获取证书并将其添加到证书文件中。
openssl s_client -connect hg-gym.de:21 -starttls ftp -showcerts