Обновление клиента FTP с TLS 1.0 до TLS 1.2 - PullRequest
0 голосов
/ 27 августа 2018

Наша компания обновила TLS 1.0 до TLS 1.2. До этого мы загружали файлы, используя org.apache.commons.net.ftp.FTPClient.

Теперь мы не можем подключиться к серверу, используя FTPSclent, и мы получаем исключение:

org.apache.commons.net.ftp.FTPConnectionClosedException: соединение закрыто без индикации

Как правильно подключиться к серверу.

Полная трассировка стека:

enter image description here

1 Ответ

0 голосов
/ 27 августа 2018

Прежде всего, включите на отладку SSL как javadoc sugests и попробуйте подключиться, затем проверьте вывод (по умолчанию он записывает в std out, вы должны перенаправить его в файл).

Сортировщик ответа

Дайте попытку аргументу -Dhttps.protocols=TLSv1.2 JVM (это должно быть передано каждому java-коду, который вы используете во время расследования, и вы должныконечно же, используйте тот же JRE).

Если не работает, проверьте сертификат сервера, который должен быть установлен в хранилище ключей JRE по умолчанию (cacerts) или в хранилище пользовательских ключей, которое вы можете использовать.

Если это не помогает, установите расширения JCE (JRE не может обработать сертификат, имеющий ключ по крайней мере 2048 бит без JCE).

Если все эти шаги бесполезны, у вас может быть та же проблемачем этот парень .

Более длинная версия

Я надеюсь, что вы используете по крайней мере Java7 (см. таблицуиз доступных протоколов на каждой платформе).

Во-первых, протоколы TLS, поддерживаемые сервером и поддерживаемые вашим приложением, должны иметь пересечение.

В этой таблице вы можете найти протоколы TLS по умолчанию дляВ разных версиях JRE это важно, поскольку ваш клиент, скорее всего, использует TLS по умолчанию для JRE.

Поэтому после того, как вы проверите свою JRE и найдете поддерживаемые версии TLS, вы должны проверить примененные шифры.

Вы должны проверить ваше соединение, используя nmap : nmap.exe --script ssl-enum-ciphers -p <port> <ftp host> с этим инструментом, вы можете перечислить версию TLS и используемые шифры.Список шифров можно сравнить со списком, представленным этим небольшим кодом java .Эти два списка должны иметь хотя бы одну общую точку, чтобы иметь возможность общаться.

Вы можете скачать сертификат сервера, используя Portecle , этот сертификат должен быть установлен в хранилище ключей вашегоклиент JRE.

Если вы обнаружили, что они имеют пересечение в протоколах TLS и в шифрах, у вас есть правильный сертификат в вашем хранилище ключей, вы можете проверить, могут ли они взаимодействовать с SSLPoke

Если это тоже работает, проблема должна быть в FTPClient.

...