Java 1.8和tomcat 6.0.53引起:java.io.EOFException:SSL对等关闭不正确

时间:2018-05-08 11:49:39

标签: java tomcat6 sslexception

var jobsSinceLastRun = _rep.GetJobs(j => j.CompletedDate > DateTime.Now.AddMonths(-1));

当我在独立的Java代码中运行相同的代码时,我得到响应,而当我在网络应用程序中运行时,我得到错误

  

Java 1.8和tomcat 6.0.53引起:java.io.EOFException:SSL对等关闭不正确

代码:

DateTime oneMonthAgo = DateTime.Now.AddMonths(-1);
var jobsSinceLastRun = _rep.GetJobs(j => j.CompletedDate > oneMonthAgo);


java -cp catalina.jar org.apache.catalina.util.ServerInfo
Server version: Apache Tomcat/6.0.53
Server built:   Apr 19 2017 22:34:06 UTC
Server number:  6.0.53.0
OS Name:        Linux
OS Version:     4.1.7-15.23.amzn1.x86_64
Architecture:   amd64
JVM Version:    1.8.0_171-b10
JVM Vendor:     Oracle Corporation

2 个答案:

答案 0 :(得分:1)

你必须添加以下行来解决握手错误

System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");

您可以找到相关文章herehere

答案 1 :(得分:0)

最后,我能够在朋友的帮助下解决。 我们能够通过启用SSL调试 -Djavax.net.debug = ssl 来调试并指出问题,这将提供与SSL相关的所有调试日志。

问题是tomcat指的是旧版本的java 1.8。与较旧版本的密码套件相比,较新版本的Java 1.8具有更多可支持的密码套件。

服务器期待更强大的密码套件(从TLS1.0到TLS1.2的PCI标准更新) 我很幸运能理解基本过程

  1. 当我们调用API时,客户端通过提供安全协议和密码套件向服务器问好。 *** ClientHello, TLSv1.2

  2. 客户端 - 发生服务器握手

  3. 服务器向客户端发送Hello

    扩展名extended_master_secret     扩展server_name,server_name:[type = host_name(0),value = *****]     http-443-exec-5,WRITE:TLSv1.2握手,长度= 206     http-443-exec-5,READ:TLSv1.2握手,长度= 93     *** ServerHello,TLSv1.2

  4. 使用密码套件验证证书

  5. 允许api调用服务器
  6. 将回复写入客户
  7. SSL - 对我来说仍然是一个未解之谜,也是一个可爱的话题。 SSL将手放入大脑: - )