SpringBoot设置mysql的ssl连接

因工作需要,mysql连接需要开启ssl认证,本文主要讲述客户端如何配置ssl连接。

  1. SpringBoot: 2.0.5.RELEASE
  2. mysql-connector-java: 8.0.18
  3. mysql version:8.0.18

一、检查服务端是否开启ssl认证

  1. show variables like '%ssl%';

  1.  

二、确认用户强制使用ssl认证

use mysql;
select ssl_type from user where user='username' and host='%';

ps:username替换成具体的用户名。

2.强制用户使用ssl认证

ALTER USER 'username'@'%' REQUIRE SSL;
FLUSH PRIVILEGES;

三、生成客户端证书

1.找服务端提供三个原始文件

2.生成truststore文件

 
keytool -importcert -alias Cacert -file ca.pem  -keystore truststoremysql -storepass password123

3.生成keystore文件

openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "mysqlclient" -passout pass:mypassword -out client-keystore.p12
keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass mypassword -destkeystore keystoremysql -deststoretype JKS -deststorepass password456

以上两个文件生成的参数可以自己修改,windows环境中没有openssl,在linux环境中执行。红色部分的参数是后面配置要用到的。

四、修改mysql的连接参数

1.正常的请求如下

spring.datasource.url = jdbc:mysql://1.2.3.4:3306/db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false

2.ssl双向认证的请求如下

ssl.cert.path = /home/app/cert
ssl.config = true&verifyServerCertificate=true&requireSSL=true&clientCertificateKeyStoreUrl=file:${ssl.cert.path}/keystoremysql&clientCertificateKeyStorePassword=password456&trustCertificateKeyStoreUrl=file:${ssl.cert.path}/truststoremysql&trustCertificateKeyStorePassword=password123
spring.datasource.url = jdbc:mysql://1.2.3.4:3306/db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=${ssl.config}

因为加上ssl认证后url太长了,所以提取了两个变量。

ssl.cert.path表示生成的两个证书文件存放路径

ssl.config的value里根据证书生成的参数对应修改,如果不需要ssl认证值设置为false即可。
 
以上就完成了客户端的配置,如常启动服务,验证连接正常即可。
 
参考资料:
Connecting Securely Using SSL
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是配置 MySQL 连接池的步骤: 1. 添加 MySQL 依赖 首先在 pom.xml 中添加 MySQL 依赖,例如: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> ``` 2. 配置 application.properties 在 src/main/resources 目录下创建 application.properties 文件,并添加以下配置: ```properties # 数据源配置 spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 连接池配置 spring.datasource.initial-size=5 spring.datasource.max-active=50 spring.datasource.min-idle=5 spring.datasource.max-idle=10 ``` 其中,spring.datasource.url 是数据库连接地址,spring.datasource.username 和 spring.datasource.password 是数据库用户名和密码,spring.datasource.driver-class-name 是数据库驱动的类名。 spring.datasource.initial-size 是连接池初始化大小,spring.datasource.max-active 是连接池最大连接数,spring.datasource.min-idle 是连接池最小空闲连接数,spring.datasource.max-idle 是连接池最大空闲连接数。 以上是基本的配置,你可以根据自己的情况进行调整。 3. 测试连接池 在代码中使用 @Autowired 注解注入 DataSource 对象,然后获取连接进行测试,例如: ```java @RestController public class TestController { @Autowired private DataSource dataSource; @GetMapping("/test") public String test() throws SQLException { Connection conn = dataSource.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT 1"); rs.next(); int result = rs.getInt(1); rs.close(); stmt.close(); conn.close(); return "Result: " + result; } } ``` 启动应用,访问 http://localhost:8080/test 进行测试,如果能输出 "Result: 1" 则说明连接池配置成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值