首页 > 其他分享 >SpringBoot项目配置文件加密

SpringBoot项目配置文件加密

时间:2024-07-01 18:22:24浏览次数:1  
标签:加密 SpringBoot 配置文件 jasypt key encryptor password

前言

防止配置文件敏感信息泄露,去年公司出现过类似事件,也防止源码泄露,对项目中的配置文件进行加密

引入方式

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

相关文章

  • nacos一个奇怪的问题:找不到正确的应用名-环境.后缀名配置文件
    spring:profiles:active:devapplication:name:system-apicloud:nacos:server-addr:192.168.101.65:8848discovery:namespace:devgroup:xuecheng-plus-projectconfig:namespace:devgr......
  • springboot校企对接实习管理系统 毕业设计-附源码11959
    摘 要校企合作实习是一种重要的实践教学模式,但是在实际的推行过程中,存在许多管理问题。其中包括远程指导困难、学生管理困难、校企信息沟通不畅等问题一直困扰着校方负责管理实习的教师们。随着互联网系统开发技术的发展,应用web技术开发B/s模式的实习管理系统,根据用户需......
  • springboot使用itextpdf+jfreechart制作PDF文档
    1.springboot引入的依赖组件项目中需要引入itextpdf和jfreechart两个组件,版本根据项目所需进行引入,maven组件版本查询可根据如下地址进行查询:maven组件查询<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><vers......
  • springboot-javax.validation检查是否属于指定的值
    引入依赖:<!--jsr303--><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><!--hibernatevalidator--><depen......
  • java springboot过滤器
    在SpringBoot应用中添加自定义过滤器,可以通过实现Filter接口或继承OncePerRequestFilter类来创建过滤器,并使用FilterRegistrationBean将其注册到Spring容器中。以下是一个简单的示例:1.创建过滤器类        首先,创建一个实现Filter接口的类,或者为了简化单次请求处......
  • springboot-javax.validation编写自定义校验注解
    引入依赖:<!--jsr303--><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><!--hibernatevalidator--><depen......
  • WebApi读取配置文件帮助类
    1///<summary>2///appsettings.json操作类3///</summary>4publicclassAppSettings5{6staticIConfigurationConfiguration{get;set;}7staticstringcontentPath{get;set;}89p......
  • springboot+vue前后端分离项目-vue项目搭建6-文件上传下载
    1.新增com/example/demo/controller/FileController.javapackagecom.example.demo.controller;importcn.hutool.core.io.FileUtil;importcn.hutool.core.util.IdUtil;importcn.hutool.core.util.StrUtil;importcom.example.demo.common.Result;importjakarta.ser......
  • QT 读取Json 配置文件
    {QStringProjectPath="";QStringConfigPath=".json";constchar*PathEnvVar=getenv("");if(PathEnvVar!=nullptr){ProjectPath=PathEnvVar;ConfigPath=ProjectPath+"/.json&quo......
  • springboot+vue+mybatis农业信息管理_种植员+PPT+论文+讲解+售后
    网络的广泛应用给生活带来了十分的便利。所以把农业信息管理与现在网络相结合,利用java技术建设农业信息管理系统,实现农业信息管理的信息化。则对于进一步提高农业信息管理发展,丰富农业信息管理经验能起到不少的促进作用。农业信息管理系统能够通过互联网得到广泛的、全面的宣......