gpt4 book ai didi

java - FTP 客户端从 TLS 1.0 升级到 TLS 1.2

转载 作者:行者123 更新时间:2023-12-01 19:49:13 29 4
gpt4 key购买 nike

我们公司已从 TLS 1.0 升级到 TLS 1.2。在此之前,我们曾经使用 org.apache.commons.net.ftp.FTPClient 下载文件。

现在我们无法使用 FTPSclent 连接到服务器,并且出现异常:

org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication

如何正确连接到服务器。

完整堆栈跟踪:

enter image description here

最佳答案

首先,转on按照 javadoc 的建议进行 SSL 调试并尝试连接,然后检查输出(默认情况下它会记录到 std 输出,您应该将其重定向到文件)。

排序器答案

尝试一下-Dhttps.protocols=TLSv1.2 JVM 参数(这应该传递给您在调查期间使用的每个 Java 代码,当然您也必须使用相同的 JRE)。

如果不起作用,请检查服务器证书,该证书应安装到 JRE 的默认 keystore (cacerts) 或您可能使用的自定义 keystore 。

如果这没有帮助,请安装 JCE 扩展(如果没有 JCE,JRE 无法处理至少具有 2048 位 key 的证书)。

如果所有这些步骤都没有用,您可能会遇到与此相同的问题guy .

较长版本

我希望您至少使用 Java7 (请参阅每个平台上可用协议(protocol)的表)。

首先,服务器支持的 TLS 协议(protocol)和应用程序支持的 TLS 协议(protocol)必须有交集。

在此table您可以找到不同 JRE 版本的默认 TLS 协议(protocol),这很重要,因为您的客户端很可能使用 JRE 的默认 TLS。

因此,在检查 JRE 并找到支持的 TLS 版本后,您应该检查应用的密码。

您应该使用 nmap 测试您的连接: nmap.exe --script ssl-enum-ciphers -p <port> <ftp host>使用此工具,您可以列出 TLS 版本和使用的密码。 cypher列表可以与这个小java code提供的列表进行比较。这两个列表必须至少有一个共同点才能进行通信。

您可以使用 Portecle 下载服务器的证书,该证书应安装在客户端 JRE 的 keystore 中。

如果您发现它们在 TLS 协议(protocol)和密码中也有交集,那么您的 keystore 中有正确的证书,您可以测试它们是否可以与 SSLPoke

如果这也有效,那么问题应该出在 FTPClient 中。

关于java - FTP 客户端从 TLS 1.0 升级到 TLS 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52036860/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com