我正在用Anypoint Studio创建一个简单的Mule流-它会定期轮询目录,当文件放在目录中时,它会将其发送到SFTP服务器。但是,当应用程序开始与服务器协商安全连接时,它将失败并显示以下错误:java.io.IOException:登录到username @ host时出错:Session.connect:java.security.InvalidAlgorithmParameterException:DH密钥大小必须是64的倍数,并且只能在512到8192(含)范围内。不支持特定的密钥大小2047堆栈跟踪引用了jsch库中的几个文件。先前问题中的解决方案建议使用其他版本的jsch或自己编辑jsch jar升级到Java 8。我的Mule服务器(版本3.9.0 EE)已经在Java 8上,我尝试了几种不同版本的jsch,并且编辑jars是不切实际的,因为此应用程序将部署到几种不同的环境中。通过WinSCP,我可以使用与应用程序相同的凭据登录sftp服务器。一位同事尝试修改工作流程以使用相同的凭据移动相同的文件,并且他们收到相同的错误。这是我流程的XML:<flow name="ClCoFlow"> <file:inbound-endpoint path="${file.from}" moveToDirectory="${file.backup}" responseTimeout="10000" doc:name="Get File to Transfer" /> <logger message="#[flowVars.originalFilename] being moved to #[flowVars.moveToDirectory]" level="INFO" doc:name="File In" /> <sftp:outbound-endpoint exchange-pattern="one-way" host="${sftp.host}" port="${sftp.port}" path="${sftp.path}" user="${sftp.user}" password="${sftp.password}" responseTimeout="10000" doc:name="SFTP" /> <logger message="#[flowVars.originalFilename] sent to sftp service" level="INFO" doc:name="File sent" /> </flow>预先感谢您可以提供的任何帮助编辑尽管Mule是基于Java构建的,并且Mule应用程序是使用Java和Spring在后台构建的,但是并没有编写创建Mule流所涉及的实际Java代码。
1 回答
![?](http://img1.sycdn.imooc.com/545863cd0001b72a02200220-100-100.jpg)
狐的传说
TA贡献1804条经验 获得超3个赞
更改提供者似乎是解决此问题的方法。不幸的是,使用Mule连接器无法做到这一点,因此我们不得不用纯Java重新编写sftp连接器。下载bouncycastle .jars之后,将它们放在src / main / app / lib中,然后将它们添加到构建路径中。您应该能够导入它们(由于某些原因,我不得不导入org.python.bouncycastle.jce.provider而不是org.bouncycastle.jce.provider)。我在代码的顶部放了:
Security.insertProviderAt(new BouncyCastleProvider(), 1);
并且在流运行时,正确协商了dh键,并且不会引发任何错误。
添加回答
举报
0/150
提交
取消