javax.net.ssl.SSLHandshakeException 异常

本贴最后更新于 980 天前,其中的信息可能已经时异事殊

发生背景:

运行博客端,启动成功后,在登录获取登录信息时报错

异常堆栈:

异常 1.PNG
异常 2.PNG

异常原因:

网络通信,发送请求时,SSL(Secure Sockets Layer 安全套接字协议)被禁止导致的异常。

SSLv3,该协议是在 Java 安装目录下 jre/lib/security/java.security 文件中被禁用的:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA,
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL,
include jdk.disabled.namedCurves

为何被禁用,Oracle 官网可以查询到对于这一修改的说明:

Search Java.com

Java 用户如何确认不会受到 SSL V3.0 POODLE 漏洞的影响

从 2015 年 1 月 20 日开始,关键补丁程序更新发行版(JDK 8u31、JDK 7u75、JDK 6u91 和更高版本)的 Java 运行时环境在默认情况下禁用 SSLv3。

POODLE 漏洞 (CVE-2014-3566) 暴露出了安全套接字层 (SSL) v3 协议中的严重缺陷。如前所述,不再推荐使用 SSLv3 协议,并且已在 Java 运行时环境中禁用它。用户如果认为有必要重新启用 SSLv3,请参阅相应的发行说明

解决方式:

1.将 Java 安装目录/jre/lib/security/java.security 文件中的 SSLv3 删除

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA,
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL,
include jdk.disabled.namedCurves

改为:

jdk.tls.disabledAlgorithms=TLSv1, TLSv1.1, RC4, DES, MD5withRSA,
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL,
include jdk.disabled.namedCurves

2.配置自己另外的 security 文件,启动时加载自己的(查询到的另一种解决方式,可以尝试)

步骤大致是:

  • 新建一份自己的 xxxjava.security 文件
  • 原 java.security 文件中配置成允许覆盖
  • 启动加载
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    69 引用 • 190 回帖 • 491 关注
3 操作
weilino 在 2021-08-18 01:35:12 更新了该帖
weilino 在 2021-08-18 01:34:10 更新了该帖
weilino 在 2021-08-18 01:31:34 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • h4n17

    楼主,万分感谢,我在本地运行 solo 的时候也是遇到这个问题

    1 回复
  • 其他回帖
  • weilino
    作者

    哈哈,不客气!