一、需求背景
需要修改应用程序通过SSL连接mysql数据库。
环境配置
数据库:MySQL 8.0.21 (enabled SSL)
Java版本:openjdk version "1.8.0_332"
Springboot版本:v2.5.3
二、生成证书
下面是MySQL数据库服务端提供三个原始文件
我们需要通过jdk自带的keytool将文件转换成java可以使用的文件
生成truststore文件
keytool -importcert -alias Cacert -file ca.pem -keystore mysql-truststore -storepass 123456Ab
其中红色是密码,可以自己定义。输入yes后完成
生成keystore文件
keytool -importkeystore -srckeystore mysql-truststore -destkeystore mysql-keystore -deststoretype pkcs12
#为mysql-keystore设置密码
Enter destination keystore password: 123456Ab
Re-enter new password: 123456Ab
#输入上面生成mysql-truststore设置的密码
Enter source keystore password: 123456Ab
三、证书使用
在工程resources下创建文件夹,将文件直接copy进去。
application.yml配置如下
classpath:mysql_ssl = resources/mysql_ssl
mysql-ssl: true&verifyServerCertificate=true&requireSSL=true&clientCertificateKeyStoreUrl=classpath:mysql_ssl/mysql-keystore&clientCertificateKeyStorePassword=123456Ab&trustCertificateKeyStoreUrl=classpath:mysql_ssl/mysql-truststore&trustCertificateKeyStorePassword=123456Ab
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.2:3306/database?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=${mysql-ssl}
username: root
password: 123456Ab
启动程序!成功!