前言
防止配置文件敏感信息泄露,去年公司出现过类似事件,也防止源码泄露,对项目中的配置文件进行加密
引入方式
pom文件引入以下依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
引入maven插件,可以更方便的将配置文件加密
<build>
<plugins>
<plugin>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-maven-plugin</artifactId>
<version>3.0.3</version>
</plugin>
</plugins>
</build>
应该是jasypt版本太低的问题,默认全局批量替换为密文的时候是查找的application.properties文件,如果没有这个文件,可以新建,用完之后再删除
将需要加密的字符串用DEC()包起来,
然后执行命令,替换后面password为自己的秘钥
mvn jasypt:encrypt -Djasypt.encryptor.password=password
可以将这个命令添加到常用的脚本文件,方便后续更改配置文件的时候再次加密
执行完成,不出意外的话可以看到application.properties里面的信息已经换成ENC()包裹的密文了
然后将ENC()包裹的密文替换为现有配置里面的信息
最后一步,在jvm启动命令添加 --jasypt.encryptor.password=password 或者-Djasypt.encryptor.password=password
其中-D表示系统属性而--用于设置应用程序选项或参数,加完正常启动项目就可以
注意事项
1、启动项目可能会报错,如果显示security什么的不存在,大概率是jdk版本过低,最好是在,1.8.0_4xx以上,如果是1.8.0_2xx大概率会出现这个问题
2、提前将jasypt.encryptor.password参数添加到启动命令上,可以在上一版的时候加上验证,检查参数是否加上,一定要联系运维加对位置,这个参数不生效也会导致系统启动失败
public static void printProperty(String key) {
String property = context.getEnvironment().getProperty(key);
log.info("environment key:{},property:{}", key, property);
String sysProperty = System.getProperty(key);
log.info("jvm key:{},Property:{}", key, sysProperty);
}
3、最后就是复制配置文件属性的时候别复制串行了
标签:加密,SpringBoot,配置文件,jasypt,key,encryptor,password From: https://www.cnblogs.com/LiuFqiang/p/18278599