警告:此处的其他答案会破坏连接安全性

警告:此处的其他答案会破坏连接安全性

如何保存证书以供 lftp 使用?

从服务器下载时,lftp 不接受有问题的证书。我试过了

openssl s_client -connect {HOSTNAME}:21 -showcerts

如何将远程服务器 SSL 证书本地保存为文件但这又回来了

CONNECTED(00000003) 3074045628:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:766:

no peer certificate available

我正在连接

lftp -p 21 -u {USER} {HOSTNAME}

并收到

ls: Fatal error: Certificate verification: Not trusted

答案1

我认为这里的问题是 FTP 服务器使用纯 FTP 但支持显式 SSL/TLS。因此,要遵循协议,客户端必须连接到 FTP 服务器并通过 AUTH 命令调用加密。(AUTH 命令以纯文本发送)

因此,回答您的问题,我认为不可能显示证书。除非您可以以某种方式将 AUTH 命令发送到 FTP 服务器。

编辑:要显示证书,请执行以下操作:

openssl s_client -connect xxxx:21 -starttls ftp

答案2

似乎许多系统上的 lftp 配置不正确,导致无法验证服务器证书。也许这就是您遇到的问题的根本原因。

网络上有很多建议通过禁用证书验证或加密来解决这个问题。这是不安全因为它可以让中间人攻击不被察觉。

更好的解决方案是正确配置证书验证,幸运的是,这很容易。为此,请将以下行添加到/etc/lftp.conf(或替代~/.lftp/rc):

set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"

ca-certificates.crt是包含系统所有 CA 证书的文件。上面使用的位置是 Ubuntu 中的,在不同的系统上可能有所不同。要生成或更新文件,请运行update-ca-certificates

sudo update-ca-certificates

如果您的系统没有此命令,您可以像这样手动创建一个:

cat /etc/ssl/certs/*.pem | sudo tee /etc/ssl/certs/ca-certificates.crt > /dev/null

答案3

警告:此处的其他答案会破坏连接安全性

所有那些要求禁用证书验证的答案无疑会削弱安全性,因为它们使连接容易受到中间人攻击。

回答一下这里保护安全的问题

这个问题使用 lftp 信任服务器证书提到此评论FTP SSL/TLS 证书处理 #214在 lftp github 网站上看起来好多了。

简洁版本

set ssl:verify-certificate/FI:NG:ER:PR:IN:T:HE:RE no

完整、已测试、可用版本

对于互动环节

将以交互方式询问密码:

lftp -e "set ssl:verify-certificate/4E:6F:74:20:72:65:61:6C:20:66:69:6E:67:65:72:70:72:69:6E:74 no ; open [email protected]"

对于无人值守的会议

  • 将密码放入~/.netrc文件中
  • 注意语法是在命令内部,而不是open [email protected]lftp [email protected]
  • -c而不是-e将执行完整命令然后退出 lftp,或者添加; quit

lftp -c "set ssl:verify-certificate/4E:6F:74:20:72:65:61:6C:20:66:69:6E:67:65:72:70:72:69:6E:74 no ; open [email protected] ; cd /some/path/on/server ; mirror "

内容~/.netrc

machine machine.domaine.name login myspecificuser password my-specific-password-not-this-one-of-course

答案4

就我而言,问题是由于服务器仅支持现代发行版不支持的 TLS 贬值版本而引起的。

测试是否可以用 openssl 连接:

$ openssl s_client  -starttls ftp -connect <hostname>:21

CONNECTED(00000003)
140140192228416:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:../ssl/statem/statem_lib.c:1940:
---
<remaining text snipped>

此错误解释如下:https://stackoverflow.com/a/53065682/1878199,tl;dr; debian 现在至少需要 TLS 1.2。

您可以使用 nmap 检查您的服务器支持什么:

$ nmap --script ssl-enum-ciphers -p 21 <hostname>

PORT   STATE SERVICE
21/tcp open  ftp
| ssl-enum-ciphers: 
|   SSLv3: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|     compressors: 
|       NULL
|     cipher preference: client
|     warnings: 
|       CBC-mode cipher in SSLv3 (CVE-2014-3566)
|   TLSv1.0: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (dh 2048) - A
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (rsa 2048) - A
|     compressors: 
|       NULL
|     cipher preference: client
|_  least strength: A

(也可以看看https://security.stackexchange.com/a/70737

所以我的服务器只接受 TLSv1.0。当然,正确的解决方案是更新服务器!

客户端可能的解决方案:

  1. 使用 SSL$ lftp -e "set ftp:ssl-auth SSL" <hostname>
  2. 禁用此连接的 SSLlftp -e "set ftp:ssl-allow no" <hostname>
  3. /etc/ssl/openssl.cnf您还可以尝试按照上面第一个链接中的说明进行编辑,以在客户端上启用已过时的协议。不推荐。

相关内容