SpringBoot配置文件敏感信息加密

Posted 向天再借500年V

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot配置文件敏感信息加密相关的知识,希望对你有一定的参考价值。

SpringBoot配置文件敏感信息加密

背景:springboot项目的配置文件application.yml内一般会存在一些敏感信息。比如数据库账号密码及连接方式等。此处明码显示肯定存在安全隐患。

说明:jasypt-spring-boot

jasypt由一个国外大神写了一个springboot下的工具包,用来加密配置文件中的信息。

一、引入maven

<dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>2.1.0</version>
</dependency>

二、配置加密密钥


# jasypt加密的密匙
jasypt:
  encryptor:
    password: 111111111111

三、生成密文

@RunWith(SpringRunner.class)
@SpringBootTest
public class DatabaseTest 

    @Autowired
    private StringEncryptor encryptor;

    @Test
    public void getPass() 
       String db = encryptor.encrypt("cm-abc");
		String ip = encryptor.encrypt("127.0.0.1");
		System.out.println("db:"+db);
		System.out.println("ip:"+ip);
    

输出

db:K0nFo/BUEt3+0nlehg9pmsWO6bk9wM0M
ip:YS0jKXX4t7mcM4yDuDfwxzgGO+I1dc9M

四、配置applicatioin.yml

# jasypt加密的密匙
jasypt:
  encryptor:
    password: 111111
    
spring:
  data:
    mongodb:
      database: ENC(IrI8AFJl60oxp7ehoJ1zql199x9LqbAU)
      host: ENC(ssogGU/d7rET9BjEKX5XpUvX9sWL9WIm)
      port: 27017

注意: 上面的 ENC() 是固定语法.

五、补充说明

部署时配置salt(盐)值

为了防止salt(盐)泄露,反解出密码.可以在项目部署的时候使用命令传入salt(盐)值:

java -jar xxx.jar  -Djasypt.encryptor.password=Y6M9fAJQdU7jNp5MW

引入环境变量

vim /etc/profile

# 文末追加

export JASYPT_PASSWORD = 1111111111

source /etc/profile

运行

java -jar -Djasypt.encryptor.password=$JASYPT_PASSWORD xxx.jar

以上是关于SpringBoot配置文件敏感信息加密的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot: 加密应用配置文件敏感信息

拒绝“裸奔“,SpringBoot集成Jasypt加密敏感信息

拒绝“裸奔“,SpringBoot集成Jasypt加密敏感信息

SpringBoot 配置文件这样加密,才足够安全!

开发经验springboot配置文件加密详解

Springboot项目如何设计接口中敏感字段的加密解密