开源 | Mysql 开启 ssl 加密协议及 Java 客户端配置操作指南

业务场景

在一些情况下,为了保证应用程序到数据库之前数据传输的安全性,以及数据库查询完成之后返回给应用程序的传输中的安全性,可以通过开启 Mysql 的 SSl 加密协议来提高数据传输的安全性,下面将主要告诉大家如何开启 Mysql 权限管理账户的 SSL 权限以及 Java 客户端如何正确配置链接参数来实现应用程序到数据库的正常业务数据传输。

Mysql 配置

Mysql 需要配置对应的 ssl 账号密码,同时对该账号开启 ssl 验证,具体操作由 DBA 完成,这里我就不再赘述,作为 Java 客户端只需要拿到 DBA 配置的账号对应的 ca.pem 证书信息即可开启后面的操作。

验证 Mysql 开启 SSL

验证命令

show global variables like '%ssl%';

验证结果如图,可以看到数据库是否开启 ssl 协议

开启 ssl 协议之后可以看到对应 Mysql 服务器的证书路径,拿到证书文件后放在 windows 本地目录等待下一步操作

Java 客户端操作

这里我测试本地 windows 环境的操作,linux 的操作基本相同,只是文件路径的区别而已

生成证书密码

首先需要基于上一步 Mysql 配置完 ssl 账户生成对应的 ca.pem 证书,通过 jvm 的 keytool 工具将 ca.pem 证书放入到 truststore 仓库中;

windows 操作系统可以直接在上一步存放 ca.pem 证书的目录通过快捷键【Ctrl+Shift+鼠标右键】唤起 Powershell 窗口,执行命令

keytool -importcert -alias MySQLCACert -file ca.pem -keystore truststore -storepass 123456

其中:truststore 是存储证书的密钥库,123456 是密钥库口令

生成之后可以查看一下是否生成成功,操作命令

keytool -list -keystore truststore

输入密钥库口令之后可以看到证书信息

回到唤起 Powershell 窗口的文件夹(即存放 ca.pem)的文件夹下可以看到生成的证书密钥库文件 truststore,如图

这样证书密码就算生成成功了,证书密码路径为: E:\2022mycomputer\mysql_cert\truststore

配置数据库连接

数据库连接如下

datasource.masterUrl=jdbc:mysql://127.0.0.1:3306/ei_app?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&verifyServerCertificate=true&requireSSL=true&sslMode=verify_ca&trustCertificateKeyStoreUrl=file:E:/2022mycomputer/mysql_cert/truststore&trustCertificateKeyStorePassword=123456

参数说明:

useSSL:是否建立 SSL 连接

verifyServerCertificate:是否需要检验 Mysql 服务器证书

requireSSL:SSL 连接,如果 Mysql 服务器不支持会失败

sslMode:SSL 的连接模式

trustCertificateKeyStoreUrl:truststore 密钥库文件

trustCertificateKeyStorePassword:truststore 密钥库口令

配置完成之后再使用对应 ca.pem 证书的账户密码即可以正常连接 Mysql 了

工具配置

这里举例工具为 navicat ,个人测试的 navicat 15 可以通过 ssl 连接数据库,navicat 11 连接不成功,连接操作如图

配置 SSL 证书信息

配置完成之后点击连接测试,如果你当前的 navicat 版本支持 SSL 连接的话会提示

如果配置没有问题但是连接测试提示失败的,那就是当前版本的 navicat 不支持 SSL 连接

可以升级 navicat 到高的版本即可,这个是版本不兼容 SSL 加密协议的问题,不是你的配置有问题的哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值