SpringBoot配置文件敏感信息加密

SpringBoot配置文件敏感信息加密

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

说明:jasypt-spring-boot

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

一、引入maven


        com.github.ulisesbocchio
        jasypt-spring-boot-starter
        2.1.0

二、配置加密密钥


# 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

你可能感兴趣的:(Java企业应用,配置加密,加密,application.yml,springboot)