当前位置: 首页 > news >正文

【MYSQL8】springboot项目,开启ssl证书安全连接

文章目录

  • 一、开启ssl证书
    • 1、msysql部署时默认开启ssl证书
    • 2、配置文件
    • 3、创建用户并指定ssl
  • 二、添加Java信任库
    • 1、使用 keytool 导入证书
    • 2、验证证书是否已导入
  • 三、修改连接配置


一、开启ssl证书

1、msysql部署时默认开启ssl证书

可通过命令查看:

SHOW VARIABLES LIKE '%have_ssl%';  

查询结果如下:
在这里插入图片描述

2、配置文件

配置my.cnf文件:

vi my.cnf
[mysql]
ssl-ca = /opt/mysqldata/data/ca.pem
ssl-cert = /opt/mysqldata/data/client-cert.pem
ssl-key = /opt/mysqldata/data/client-key.pem
[mysqld]
require_secure_transport = ON
ssl-ca = /opt/mysqldata/data/ca.pem
ssl-cert = /opt/mysqldata/data/server-cert.pem
ssl-key = /opt/mysqldata/data/server-key.pem

在这里插入图片描述
文件说明:
ca.pem # 自签的CA证书,客户端连接也需要提供
client-cert.pem # 客户端连接服务器端需要提供的证书文件
client-key.pem # 客户端连接服务器端需要提供的私钥文件
server-cert.pem # 服务器端证书文件
server-key.pem # 服务器端私钥文件

3、创建用户并指定ssl

create user jk_dev@'%' identified with mysql_native_password by '密码';
alter user 'jk_dev'@'%' require ssl;
grant all privileges on *.* to 'jk_dev'@'%';
flush privileges;

二、添加Java信任库

1、使用 keytool 导入证书

运行以下命令将 CA 证书导入到 Java 信任库:

keytool -import -alias mysql_ca -file /opt/mysqldata/data/ca.pem -keystore $JAVA_HOME/jre/lib/security/cacerts

执行时需要输入信任库密码(默认为changeit)。

2、验证证书是否已导入

运行以下命令验证是否已导入:

keytool -list -alias mysql_ca -keystore $JAVA_HOME/jre/lib/security/cacerts

如果证书未导入,Java无法将 MySQL 服务器提供的证书链追溯到它信任的根证书,连接时会报错:

Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchorsat com.mysql.cj.protocol.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:379)at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1255)at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:630)... 81 common frames omitted
Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchorsat sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:159)at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:85)at java.security.cert.CertPathValidator.validate(CertPathValidator.java:292)at com.mysql.cj.protocol.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:373)... 83 common frames omitted

三、修改连接配置

修改配置文件,数据库连接指向client-key.pem和client-cert.pem:

spring.datasource.url=jdbc:mysql://xxxx:3306/jkfunds_dev?useSSL=true&requireSSL=true&verifyServerCertificate=true&clientCertificateKeyFile=file:/opt/mysqldata/data/client-key.pem&clientCertificateFile=file:/opt/mysqldata/data/client-cert.pem&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=Asia/Shanghai
http://www.dtcms.com/a/274903.html

相关文章:

  • 深度学习篇---昇腾NPUCANN 工具包
  • 数字后端APR innovus sroute到底是如何选取宽度来铺power rail的?
  • 大模型遇上数据库:如何真正实现从“智能问数”到“精准问数”?Intalink给出答案
  • Rust基础-part3-函数
  • 如何在 PyCharm 批量调整代码缩进?PyCharm 调整代码格式化和代码缩进的快捷键有哪些?
  • Pandas:常见的转换函数(rename,set_index,reset_index)
  • 麦迪逊悬架cad【14张】+三维图+设计说明书
  • VLLM部署DeepSeek-LLM-7B-Chat 模型
  • 云网络产品
  • 简单记录一下Debug的折磨历程
  • 多项式环及Rq的含义
  • Solaris10 创建用户初始化家目录
  • 注意力机制十问
  • softmax回归的从零开始实现
  • Java 抽象类详解:从基础到实战,掌握面向对象设计的核心基石
  • 渗透测试之木马后门实验
  • 拥抱AI----AI时代下的SSM框架
  • 项目捷报 | 冠捷科技泰国工厂THA MES项目成功验收!TPV国际化布局再添里程碑!
  • 【中文核心期刊推荐】中国农业科技导报
  • php的原生类
  • 7.12 卷积 | 最小生成树 prim
  • 转转APP逆向
  • WIFI协议全解析06:Beacon帧、Probe帧你必须懂,搞WiFi通信绕不开它们
  • RAG知识库检索查询优化技术
  • 【实时Linux实战系列】 KVM-RT 与 Jailhouse 虚拟化
  • C++ 面向对象 - 默认值与常量成员
  • sensor_msgs中常用的传感器数据格式以及c++操作
  • 数字孪生技术引领UI前端设计新风尚:智能穿戴设备的界面优化
  • MongoDB(一)
  • 用Python和OpenCV从零搭建一个完整的双目视觉系统(六 最终篇)