Mysql配置
Mysql需要配置对应的ssl账号密码,同时对该账号开启ssl验证,具体操作由DBA完成,这里我就不再赘述,作为Java客户端只需要拿到DBA配置的账号对应的ca.pem证书信息即可开启后面的操作。
验证Mysql开启SSL
验证命令
show global variables like '%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到高的版本即可,