正确的配置文件
接下来我们将 Spring Boot 的公钥设置为配置项,在项目运行时再替换为具体的值,最终的安全配置信息如下:
spring: # MySQL 配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: url: jdbc:mysql://127.0.0.1:3306/testdb?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false username: root password: IMgKm27bOHok3/+5aDL4jGBoVVZkpicbbM6pIXQppi3dI7h3jngSAqhqwqYnfuYpyVJ0k++q9xWWnHtd6sAWnQ== # encrypt config filters: config connect-properties: config.decrypt: true config.decrypt.key: ${spring.datasource.druid.publickey}
可以看出公钥被修改成“${spring.datasource.druid.publickey}”了,这就相当于使用占位符先把坑给占上,等项目启动时再更换上具体的值。
PS:“spring.datasource.druid.publickey”并非是固定不可变的 key,此 key 值用户可自行定义。
开发环境替换公钥
开发环境只需要在 Idea 的启动参数中配置公钥的值即可,如下图所示:
当我们输入正确的公钥值时程序可以正常运行,当输入一个错误的公钥值时就会提示解码失败,如下图所示:
生产环境替换公钥
生产环境在启动 jar 包时只需要动态设置公钥的值即可,参考以下命令:
java -jar xxx.jar --spring.datasource.druid.publickey=你的公钥