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配置文件敏感信息加密的主要内容,如果未能解决你的问题,请参考以下文章
拒绝“裸奔“,SpringBoot集成Jasypt加密敏感信息