Java报错javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify解决方法

简介: Java报错javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify解决方法

一、问题描述


在利用SpringBoot开发项目时发现控制台中报了javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer'sclose_notify的错误,但是并没有影响程序的正常运行,网络上搜索了很多种方法都没有解决了,偶然间看到一篇博客写到了解决的方法并成功解决了报错,在此进行记录。

MonSep1309:48:11CST2021WARN: Caughtwhiledisconnecting...
EXCEPTIONSTACKTRACE:
**BEGINNESTEDEXCEPTION**javax.net.ssl.SSLExceptionMESSAGE: closinginboundbeforereceivingpeer's close_notifySTACKTRACE:
javax.net.ssl.SSLException: closinginboundbeforereceivingpeer's close_notifyatjava.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
atjava.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
atjava.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:356)
atjava.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:312)
atjava.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:303)
atjava.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:817)
atjava.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:796)
atcom.mysql.cj.protocol.a.NativeProtocol.quit(NativeProtocol.java:1312)
atcom.mysql.cj.NativeSession.quit(NativeSession.java:182)
atcom.mysql.cj.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:1750)
atcom.mysql.cj.jdbc.ConnectionImpl.close(ConnectionImpl.java:720)
atcom.zaxxer.hikari.pool.PoolBase.quietlyCloseConnection(PoolBase.java:143)
atcom.zaxxer.hikari.pool.HikariPool.lambda$closeConnection$1(HikariPool.java:451)
atjava.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
atjava.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
atjava.base/java.lang.Thread.run(Thread.java:832)
**ENDNESTEDEXCEPTION**

二、解决方法


在配置文件中数据库连接的url属性中加入useSSL=false即可解决

yml文件格式:

##数据源配置spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/数据库名称?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=falseusername: 用户名password: 密码

二、解决方法


在配置文件中数据库连接的url属性中加入useSSL=false即可解决

yml文件格式:

##数据源配置spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/数据库名称?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=falseusername: 用户名password: 密码

properties文件格式:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/数据库名称?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=falsespring.datasource.username=用户名spring.datasource.password=密码

总结


在开发项目的过程中并未直观的感觉到SSL证书连接异常会带来什么样的后果,在查阅资料之后才发现,SSL证书的连接对网站的安全性

有着至关重要的作用,SSL证书是一种安全性高的数字证书,该证书配置在服务器上之后,能够更好的提高网站的安全性,给网站更好的安全防护。

如果SSL证书连接异常,将会带来以下的后果:(以下内容转自一位大佬的博客,仅供个人学习使用)

  1. 网站安全性下降:企业给网站配置SSL证书的目的就是保护网站安全,提高网站的安全性。但是一旦SSL证书连接异常,将无法起到保护网站的所用,这种情况下网站的安全性就会大大的下降。
  2. 信息会发生泄露:如果网站配置了SSL证书,就可以让信息加密传输,可以防止信息泄露出去。然而当SSL证书发生连接异常后,对传输的信息将起不到加密作用,这种情况下,客户端和服务器之间的信息传输就更容易被泄露出去。

以上便是javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer's close_notify错误的解决方法以及SSL证书连接异常时会带来的影响

image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
11月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
606 18
|
11月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
419 4
|
11月前
|
JSON Java 数据格式
java调用服务报错400
java调用服务报错400
269 6
java调用服务报错400
|
11月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
596 6
|
11月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
565 5
|
12月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
302 11
|
12月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
462 4
|
11月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
537 1