首页 > 解决方案 > “handshake_failure at remote address”Java netty 错误背后的原因是什么?

问题描述

我创建这个页面主要是为了解决这个问题,但也因为谷歌在标题中为这个引用的错误返回了 0 个结果。

我的旧Tomcat7 webapp的后端客户端最近将其 SSL 证书更新为 TLS1.2,现在我的生产系统无法连接。这个代码库已有 5 年历史,而且非常庞大。如果不进行大手术,我不能简单地升级到 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,但看起来是合法的)并在非 prod 服务器上尝试了这个问题,我仍然得到 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"

还没有区别。

我还尝试在浏览器中下载证书,使用 openssl 将其转换为 x509 并将其导入我的 jks(java 密钥库)。

还有什么我可以做的吗?

标签: sslnettyjava-7tls1.2sslhandshakeexception

解决方案


推荐阅读