【问题标题】:SFTP Connector DH Key ErrorSFTP 连接器 DH 密钥错误
【发布时间】:2018-06-19 18:59:11
【问题描述】:

我正在 Anypoint Studio 中创建一个简单的 Mule 流程 - 它会定期轮询目录,当文件放入目录中时,它会将其发送到 SFTP 服务器。但是,当应用程序开始与服务器协商安全连接时,它会失败并出现以下错误:

java.io.IOException: 登录 username@host 时出错: Session.connect:java.security.InvalidAlgorithmParameterException:DH 密钥大小必须是 64 的倍数,范围只能是 512 到 8192 (包括的)。不支持具体密钥大小2047

堆栈跟踪引用了 jsch 库中的几个文件。之前问题中的解决方案建议升级到 Java 8,使用不同版本的 jsch,或者自己编辑 jsch jar。我的 Mule 服务器(版本 3.9.0 EE)已经在 J​​ava 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 代码。

【问题讨论】:

  • 更改提供者列表应该在您的代码中调用jsch之前完成。如果你不能这样做,你也可以通过 j8 在文件 JRE/lib/security/java.security 或 j9 中的 JRE/conf/security/java.security 中配置它(我预计是 10 个),但需要注意的是适用于在该 JRE 中运行的所有程序。 PS:WinSCP 之所以有效,是因为它使用了完全不同的协议实现,即 putty 的 C 语言实现。

标签: java mule sftp jsch


【解决方案1】:

更改提供者似乎是这里的方法。不幸的是,Mule 连接器无法做到这一点,所以我们不得不用纯 Java 重新编写 sftp 连接器。下载 bouncycastle .jars 后,将它们放在 src/main/app/lib 中,然后将它们添加到构建路径中。您应该能够导入它们(出于某种原因,我不得不导入 org.python.bouncycastle.jce.provider 而不是 org.bouncycastle.jce.provider)。在我的代码顶部我放了:

Security.insertProviderAt(new BouncyCastleProvider(), 1);

当流程运行时,dh 密钥已正确协商,不会引发任何错误。

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 2023-03-16
    • 1970-01-01
    • 2022-06-15
    • 2022-11-21
    • 2014-02-21
    • 2015-12-12
    • 2021-06-19
    相关资源
    最近更新 更多