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、最后就是复制配置文件属性的时候别复制串行了

posted @ 2024-07-01 18:16  木马不是马  阅读(5)  评论(0编辑  收藏  举报