ssl - “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 密钥库)。
还有什么我可以做的吗?
解决方案
推荐阅读
- javascript - Cloud Function 中的 Dialogflow 会话处理
- java - java优雅高效的初始化List的方法
- javascript - 我可以映射导入组件及其子组件吗?
- c++ - 在 C++ 中对语句使用运算符“+”和“*”
- multithreading - 如何在 Flutter 中显示带有后台任务的 AlertDialog
- entity-framework - 如何处理数据加载器/GraphQL 嵌套查询中的并发 DbContext 访问?
- java - Katalon 自动化 - 生成报告后执行脚本
- bash - 使用其他选项之一处理 Bash getopts 选项
- r - R 乘以特定行数的平均值
- mysql - 在一个单元格/行中获取查询的所有返回值?