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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 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 
相关文章
|
9月前
|
Android开发
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
531 4
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
|
8月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
374 4
|
7月前
|
JSON Java 数据格式
java调用服务报错400
java调用服务报错400
201 6
java调用服务报错400
|
7月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
454 6
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
656 5
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
785 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
406 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
355 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
339 0