SFTP密钥的问题? java.security.InvalidAlgorithmParameterException

我试图用我的应用程序SFTP客户端testing连接来连接到MF,但我得到的错误:

SFTP用户别名GLDFundingEngine_Usertesting失败。 详细信息:Session.connect:java.security.InvalidAlgorithmParameterException:素数大小必须是64的倍数,并且只能在512到2048之间(包含)

这是一个内置的客户端,所以我没有太多的控制权。 我testing了这两个键,他们应该是好的:

ssh-keygen -lf intserv.rsa.pub 2048 ssh-keygen -lf GLDFundingEngine_XXXXXXXXXXXXXXXXXXXX_22_rsa.pub 1024 

还有什么其他的这个错误可以指向? search堆栈交换只是指向不同的SSH库,我没有能力改变。

谢谢

问题绝对不是你的关键; 这很可能是服务器的Diffie-Hellman参数 – 或者可能是他们的DSA密钥,但是没有太多的人使用DSA密钥进行SSH,特别是因为OpenSSH最近弃用了它们。 可能需要使用networking跟踪来查看错误发生的时间:例如group14的初始协商; 或DHGEX组及其参数; 或包含DSA签名和签名的DH(GEX)回复。

如果您在版本8之前使用Sun / Oracle Java,则无法处理大于1024的DH(或DSA)大小,但是DH大小1024现在被认为是脆弱的,因此许多服务器使用2048.请参阅https://weakdh.org和和/或许多Qs主要关于security.SX和crypto.SX关于Logjam。 在这种情况下,您有两个select:升级到Java 8,其中DH(和DSA)2048工作; 或者如果服务器支持ECDH和您正在使用的SSH库并且不能更改,但是您使用的是Java 6(或更低版本?),那么请添加来自http://www.bouncycastle.org的提供程序它确实支持ECDH,这一般比传统DH更受欢迎,从而避免了这个问题。

如果您正在使用IBM Java,正如我从MF – >大型机 – > IBM大型机 – > IBM商店中疯狂地推测的那样,这个答案不适用于直接。 IBM Java使用与Sun / Oracle Java中的Sun / Oracle密码提供程序不同的IBM密码提供程序。 但是,如果您检查其DH参数大小和可能的DSA参数大小的文档,可能会有类似的东西。

如果不是DH,那么一定要看networking跟踪,如果你不能弄清楚,就把相关的部分添加到你的问题中。

交叉
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