我主要创建此页面来解决此问题,但也因为Google在标题中返回0引用此错误的结果。
我的传统 Tomcat7 webapp的后端客户端最近将其SSL证书更新为TLS1.2,现在我的生产系统无法连接。此代码库是5年和MASSIVE。如果没有大手术,我不能简单地升级到JDK 1.8。
在我的Mac OSX Intellij IDE中,我使用1.7.0_u141 并且工作正常,它可以连接到客户端并返回数据!但是在我的IDE中使用1.7.0_79,我能够重现错误并对尝试执行SSL握手的java代码进行调试。
我曾尝试更新CentOS 6.6服务器以使用1.7.0_131(同样的错误),我在“互联网”上找到1.7.0_151b32(即不是来自oracle但看起来合法)并在非产品服务器上尝试过对于这个问题,我仍然得到SSLHandshakeException :(数据被屏蔽和更改,因此安全性不会对我大喊)
com.twitter.finagle.SslHandshakeException: Received fatal alert: handshake_failure at remote address: client.example.com/##.##.##.##:443,DefaultHttpRequest(chunked: false)
GET /BClass/LocationStatusLookup?id=################### HTTP/1.1
Host: client.example.com
Accept-Encoding: gzip, deflate
,Some(com.twitter.finagle.ChannelWriteException: com.twitter.finagle.SslHandshakeException: Received fatal alert: handshake_failure at remote address: client.example.com/##.##.##.##:443))
我尝试将这些参数传递给tomcat7 setenv.sh:
-Dhttps.protocols="TLSv1,TLSv1.1,TLSv1.2"
-Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"
没有区别。
我还尝试在浏览器中下载cert,使用openssl将其转换为x509并将其导入我的jks(java密钥库)。
我还能做什么?