Получено предупреждение TLS от сервера: сбой при установлении связи (40)
У меня есть новый веб-сервер с proftpd
на борту. Проблема в том, что я не могу подключиться к нему через filezilla
FTP-клиент, потому что он дает мне ошибку
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.conf
это отключает ADH
, DES
, SSLv2
а также SSLv3
шифры.
TLSCipherSuite ALL:!ADH:!DES:!SSLv2:!SSLv3
Когда я удаляю :!SSLv3
из директивы и перезагрузите сервер, filezilla подключается без проблем. Но позволяя SSLv3
кажется плохой идеей, потому что она уязвима и небезопасна, согласно http://disablessl3.com/
Вопрос
Итак, мой вопрос, что я могу сделать, чтобы сделать proftpd
предоставить хотя бы один безопасный шифр для успешного ведения переговоров filezilla
FTP-клиент?
Дополнительное примечание
Есть похожий вопрос Получено предупреждение 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
2 ответа
Корень проблемы был в отсутствии 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 ALL -SSLv3
вместо.
Предполагая, что вы используете системные библиотеки OpenSSL (например, вашу установку RedHat RPM), вы можете просмотреть доступные шифры, выполнив:
openssl ciphers -v 'ALL:!ADH:!DES:!SSLv2:!SSLv3'
Если filezilla просто не говорит SSLv3/TLSv1 (примерно эквивалентно), вам не повезло, и вы должны посмотреть, есть ли обновленная версия, которая делает.
Может быть другой параметр конфигурации / конфигурации ciphersuite, который подходит для вашей рабочей нагрузки, но не рекомендуется получать его с этого форума без должного анализа требований вашей ситуации.