【问题标题】:Java 8 Update 162 javax.net.ssl.sslexception received fatal alert unexpected_messageJava 8 更新 162 javax.net.ssl.sslexception 收到致命警报意外消息
【发布时间】:2020-03-15 02:39:26
【问题描述】:

(我不是 Java 专家,但如果您能提供指导以及我需要在哪里运行命令或进行更改,我应该很好,再次感谢)

我们有一个通过 ssl 连接到 web 服务的 https 客户端。这总是适用于 Java 7。 我们正在将计算机升级到 Java 8 Update 162。不幸的是,客户端无法再连接到 Web 服务。我想知道是什么原因造成的以及如何解决?

并且客户端抛出以下异常:

Log SOP opened on 18/10/19 at 12:10:29:692
Log SOP is logging at level 4 at 12:10:29:692
SOP|SOP|L4|12:10:29:692|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|Logging in user 'dmdbadm'...
SOP|SOP|L4|12:10:29:739|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|Establishing connection to service order manager...
SOP|SOP|L4|12:10:29:817|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|Connection to service order manager successfully established.
SOP|SOP|L3|12:10:29:863|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|error during JRMP connection establishment; nested exception is: 
    javax.net.ssl.SSLException: Received fatal alert: unexpected_message
SOP|SOP|L4|12:10:43:826|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|Logging out user ''...
SOP|SOP|L4|12:10:43:888|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|Establishing connection to service order manager...
SOP|SOP|L4|12:10:43:950|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|Connection to service order manager successfully established.
SOP|SOP|L2|12:10:43:982|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|Error connecting to service order manager: java.lang.NullPointerException
SOP|SOP|L3|12:10:44:028|thread applet-com.nortelnetworks.wp.util.ui.WPApplet.class-1|null"

【问题讨论】:

  • 服务器 TLS 版本和证书提供者是什么?如果您使用-Djava.net.debug=all 运行,在协商加密时您会在日志中看到什么?
  • 您好,我不是 Java 专家(抱歉)我在哪里运行 -Djava.net.debug=ssl 我们已经进行了一些测试,发现 Java 7 与 Web 应用程序通信的时间是通过 TLS 1.0 这样做,但在尝试 Java 8 正在通过 TLS 1.2 时,Java 7 也显示 SSL 3.0,而 Java 8 仅显示 SSL 2.0

标签: java sslexception


【解决方案1】:

您的服务器似乎需要not secure anymore 的 SSLv3 协议,而 Java 8 正确拒绝了连接。 Java 8 Update 31 (8u31) 已根据 Java 8 Release Highlights 禁用 SSLv3。

你有两个选择:

  1. 确保您的服务器使用安全的 TLS 协议版本,例如TLSv1.1 或 TLSv1.2。这更可取,因为 SSLv3 不再安全。

  2. 以某种方式将 Java 8 配置为使用过时的 SSLv3。不推荐。

【讨论】:

  • 我尝试过使用 TLS v1.1 和 TSL v1.2 - 这会给出错误 ClassNotFoundException。由于这是一个内部应用程序,我将尝试查看是否可以将 Java 8 配置为用户 SSLv3 作为测试,以查看我得到的输出只需要知道启用此功能的 Java 属性文件。
  • 更新 我从 java.security 文件中的 jdk.tls.disableAlgorithms 中删除了 SSLv3,但我想知道是否必须添加代码才能在 Java 8 中运行?
  • 更新 我已将 Java 8 配置为运行 SSLv3(通过 wireshark 检查),但仍然收到相同的错误消息 我相信应用程序需要通过 SSLv1 或第一个版本的握手SSL,然后将与 TLSv1 正常通信
  • SSLv1 与 TLSv1.0 不同,这是两个不同的标准。
  • 更新我设法通过禁用 TLSv1 使应用程序正常工作,TLSv1.1 和 TLS1.2 也仅从 jdk.jar.disabledAlgorithms 和 jdk.cert.disabledAlgorithms 中删除了协议禁用 MD2 但这会导致其他需要以 TLSv1 进行通信的应用程序出现问题
【解决方案2】:

对延迟表示歉意,所以我听从了您的建议 Karol Dowbecki Java 更新 31 禁用 SSLv3,因此安装了 Java 更新 25,这解决了问题,所有应用程序在封闭网络上运行良好。

我知道 SSL 需要在应用程序端升级到 TLS,但我无法控制它,因为它由不同的团队支持。

【讨论】:

    猜你喜欢
    • 2014-10-22
    • 2019-09-28
    • 2013-05-08
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    相关资源
    最近更新 更多