由于信息安全越来越重视,当别人拿到或者看到你的配置文件。相当于数据库等在裸奔。
所以我们需要对敏感信息比如IP,密码,用户名,关键路径等加密。
我们需要加个jar就可以简单实现配置文件密文启动。
添加jasypt-spring-boot-starter这个jar。它是一个加密工具,会在使用配置信息之前,先拦截获取配置的操作,解密对应的加密配置再使用。有兴趣的可以看看源码。
<!-- Profile encryption -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
引入后,我们写个工具类来测试,textEncryptor.setPassword("123456");这个相当于加盐。可以自己定一个复杂点的。
package com.xc.luckysheet.utils;
import org.jasypt.util.text.BasicTextEncryptor;
/**
* jasypt-spring-boot-starter 生成密文的工具代码
* @author cm
*/
public class EncryptConfigUtil {
public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt
textEncryptor.setPassword("123456");
//要加密的数据(数据库的用户名或密码)
String username = textEncryptor.encrypt("root");
String password = textEncryptor.encrypt("123456");
System.out.println("username:"+username);
System.out.println("password:"+password);
}
}
建议在idea配置启动参数VM options 加上 -Djasypt.encryptor.password=123456
生成的密文:r6YUrfKMAAzzltzmApEYv7lZyILULq== 需要加上ENC() 最终配置如下:
spring:
redis:
host: 192.168.10.245
port: 13556
password: ENC(r6YJrfKMAAzzltzmEpEYv7lzYINULq6g)
timeout: 1000ms
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
database: 0
db:
mysql:
druid:
url: jdbc:mysql://192.168.10.132:33037/cn_db?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driverClassName: com.mysql.cj.jdbc.Driver
username: ENC(opGC8sQt5JVH3j4VD5i2Ug)
password: ENC(r6YUrfKMAAzzltzmApEYv7lZyILULq==)
然后就可以启动了。