使用 lftp 信任服务器证书

使用 lftp 信任服务器证书

当使用 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 或特定服务器的支持)ftpncftp,,,,,,dolphin (KIO)curlftpfstnftpfirefox

答案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 一步步对我有用的是:

  1. 获取证书的主机openssl s_client -connect <ftp_hostname>:21 -starttls ftp,在结果的开头我得到了类似的-----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE-----
  2. 复制-----BEGIN CERTIFICATE----- MIIEQzCCAyu.....XjMO -----END CERTIFICATE----- 进入 /etc/ssl/certs/ca-certificates.crt
  3. 进入lftp 配置引用此证书文件添加到/etc/lftp.conf系统范围set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"
  4. 然后进行同步或其他操作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

相关内容