SpringBoot项目配置文件加密
前言
防止配置文件敏感信息泄露,去年公司出现过类似事件,也防止源码泄露,对项目中的配置文件进行加密
引入方式
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、最后就是复制配置文件属性的时候别复制串行了
在测试类中同样需要添加变量,添加以下代码即可
@DynamicPropertySource
static void dynamicProperties(DynamicPropertyRegistry registry) {
registry.add("jasypt.encryptor.password", () -> "risk-data-flatten");
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
2022-07-01 ElasticSerch同时查询多个索引