Java 17连接启用TLS的FTPS服务器SSL异常的解决方案
我们测试了多种FTPS文件传输方案,这些方案在Java 11等低版本Java环境中可正常运行,但在Java 17中持续抛出**"SSL peer shut down incorrectly"**异常。
对应的报错堆栈信息如下:
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:483)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1505)
... 9 more
此前我们尝试过两类方案:
- 针对FTPS握手阶段连接关闭异常的相关方案
- 让数据连接复用TLS会话的方案(该方案在Java 11中可正常生效)
但以上方案均未能解决Java 17环境下的问题,最终通过添加以下系统属性配置成功解决:
System.setProperty("jdk.tls.client.enableSessionTicketExtension", "false")
内容的提问来源于stack exchange,提问作者Rajesh Garaga

