Назад | Перейти на главную страницу

Проблема с ключом SFTP? java.security.InvalidAlgorithmParameterException

Я пытаюсь использовать тестовое соединение клиента SFTP для подключения к MF, но получаю сообщение об ошибке:

Проверка псевдонима пользователя SFTP GLDFundingEngine_User не удалась. Подробности: Session.connect: java.security.InvalidAlgorithmParameterException: основной размер должен быть кратен 64 и может находиться в диапазоне только от 512 до 2048 (включительно)

Это встроенный клиент, поэтому у меня нет особого контроля над ним. Я проверил оба ключа, и они должны быть хорошими:

ssh-keygen -lf intserv.rsa.pub
2048

ssh-keygen -lf GLDFundingEngine_XXXXXXXXXXXXXXXXXXXX_22_rsa.pub
1024

Есть ли что-то еще, на что указывает эта ошибка? Поиск обмена стеками просто указывает на разные библиотеки SSH, которые у меня нет возможности изменить.

Спасибо

Проблема определенно не в вашем ключе; его скорее всего параметры сервера Диффи-Хеллмана - или, возможно, их ключ DSA, но не так много людей используют ключи DSA для SSH, тем более что OpenSSH недавно отказался от них. Возможно, стоит провести трассировку сети, чтобы точно увидеть, когда возникает ошибка: при начальном согласовании, например group14; или DHGEXgroup и его параметры; или ответ DH (GEX), содержащий подпись DSA и эту подпись.

Если вы используете Sun / Oracle Java до версии 8, он не может обрабатывать размеры DH (или DSA) выше 1024, но размер 1024 DH теперь считается уязвимым, поэтому многие серверы используют 2048. См. https://weakdh.org и http://www.keylength.org и / или многие вопросы, касающиеся безопасности.SX и crypto.SX о Logjam. В этом случае у вас есть два варианта: обновить до Java 8, где работает DH (и DSA) 2048; или если сервер поддерживает ECDH и библиотеку SSH, которую вы используете и не можете изменить, также поддерживает, но вы используете Java 6 (или ниже?), что не делает, добавьте поставщика из http://www.bouncycastle.org который делает поддерживают ECDH, который обычно предпочтительнее классического DH, что позволяет избежать проблемы.

Если вы используете IBM Java, как я дико предполагаю, исходя из возможности MF -> мэйнфрейм -> мэйнфрейм IBM -> магазин IBM, этот ответ не применяется напрямую. IBM Java использует криптопровайдеры IBM, которые отличаются от криптопровайдеров Sun / Oracle в Sun / Oracle Java. Однако, если вы посмотрите в их документации размеры параметров DH и, возможно, размеры параметров DSA, может быть что-то похожее.

Если это не DH, обязательно посмотрите трассировку сети, и если вы не можете понять это, добавьте соответствующие части к вашему вопросу.

Crossdupe из
https://stackoverflow.com/questions/6851461/java-why-does-ssl-handshake-give-could-not-generate-dh-keypair-exception
https://stackoverflow.com/questions/10687200/java-7-and-could-not-generate-dh-keypair
https://stackoverflow.com/questions/21442547/java-ssl-dh-keypair-generation-prime-size-error
https://stackoverflow.com/questions/33088458/how-to-workaround-java-6-ssl-error