从服务器收到 TLS 警报:握手失败(40)

从服务器收到 TLS 警报:握手失败(40)

我有proftpd一个内置的新 Web 服务器。问题是我无法通过filezillaFTP 客户端连接到它,因为它会给我一个错误

Status: Connection established, waiting for welcome message...
Response:   220 FTP Server ready.
Command:    AUTH TLS
Response:   234 AUTH TLS successful
Status: Initializing TLS...
Error:  Received TLS alert from the server: Handshake failed (40)
Error:  Could not connect to server

我发现该错误对应的是proftpd日志/var/log/proftpd/tls.log/var/log/proftpd/tls.log记录:

Jul 24 13:50:47 mod_tls/2.4.2[1572]: unable to accept TLS connection: protocol error: 
  (1) error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher

这意味着 ftp 客户端不支持服务器提供的任何加密算法。因此,连接失败。

我还发现了一个禁用、和密码TLSCipherSuite的指令。/etc/proftpd.confADHDESSSLv2SSLv3

TLSCipherSuite                 ALL:!ADH:!DES:!SSLv2:!SSLv3

当我从指令中删除:!SSLv3并重新启动服务器时,filezilla 连接没有任何问题。但启用它SSLv3似乎不是一个好主意,因为它很容易受到攻击且不安全,根据http://disablessl3.com/

问题

所以我的问题是,我该怎么做才能proftpd提供至少一个安全密码以便成功与filezillaFTP 客户端进行协商?

补充说明

有一个类似的问题收到服务器的 TLS 警报:握手失败(40)这说明

仅使用普通 FTP(不安全)

但我希望连接是安全的,因此对我来说这个答案是不合适的。

附加说明 #2

可用密码列表:

[root@server ~]# openssl ciphers -v 'ALL:!ADH:!DES:!SSLv2:!SSLv3'
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA384
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=DSS  Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA256
DHE-DSS-AES256-SHA256   TLSv1.2 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA256
ECDH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-RSA-AES256-SHA384  TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(256)  Mac=SHA384
ECDH-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256)  Mac=SHA384
AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD
AES256-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA256
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA256
DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=DSS  Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA256
DHE-DSS-AES128-SHA256   TLSv1.2 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA256
ECDH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-RSA-AES128-SHA256  TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(128)  Mac=SHA256
ECDH-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128)  Mac=SHA256
AES128-GCM-SHA256       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(128) Mac=AEAD
AES128-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA256

答案1

TLSProtocol问题的根源是中缺少指令/etc/proftpd.conf。默认值为TLSv1,它阻止了 的使用TLSv1.2

我已经添加了

  TLSProtocol                   TLSv1.2

/etc/proftpd.conf,重启了服务器,问题解决。

https://forum.filezilla-project.org/viewtopic.php?f=2&t=45829&p=157134#p157134 http://www.proftpd.org/docs/contrib/mod_tls.html#TLSProtocol

虽然它解决了我的问题,但也建议使用

  TLSProtocol                   ALL -SSLv3

反而。

https://forum.filezilla-project.org/viewtopic.php?p=157135#p157135

答案2

假设您正在使用系统安装的 OpenSSL 库(例如 RedHat RPM 安装),您可以通过运行以下命令查看可用的密码:

openssl ciphers -v 'ALL:!ADH:!DES:!SSLv2:!SSLv3'

如果 filezilla 不支持 SSLv3/TLSv1(大致相当),那您就没那么幸运了,您应该看看是否有可用的更新版本。

可能存在另一种适合您工作负载的配置/密码套件设置,但在没有正确分析您的情况的要求的情况下从此论坛获取它是不可取的。

相关内容