写点什么

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

  • 2022 年 8 月 09 日
    北京
  • 本文字数:1239 字

    阅读完需:约 4 分钟

开源一夏 | 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 加密协议的问题,不是你的配置有问题的哦。


发布于: 刚刚阅读数: 5
用户头像

让技术不再枯燥,让每一位技术人爱上技术 2022.07.22 加入

还未添加个人简介

评论

发布
暂无评论
开源一夏 | Mysql开启ssl加密协议及Java客户端配置操作指南_MySQL_六月的雨在infoQ_InfoQ写作社区