欢迎访问
陈同学博客原文
jasypt-spring-boot on github
本文讲述了在Spring Boot/Spring Cloud应用中使用jasypt来加密properties。
jasypt 简介
详细信息直接看github文档即可,这里仅简单罗列一丢丢信息。
Jasypt为Spring Boot应用提供property sources的加密支持,可以加密的数据有:
system property
environment property
command line argument
application.properties
yaml properties
other custom property sources
##哪些是敏感信息?
由于很多应用使用
配置文件 (eg:properties、yml)
来存储配置信息,配置中经常会涉及到许多敏感信息。
举几个小例子:
普通应用密码信息,如:DB、Rabbit、Redis等
特殊密码信息,如:Spring Cloud Config需要配置Git等VCS密码信息
第三方通讯凭证信息,如:调用第三方接口发送短信的通讯凭证信息
由于各业务场景不同,因此敏感信息的定义也不同。
应用场景案例
这里以自有团队的Spring Cloud Config来举个例子。
场景:
使用两个git repository来存储配置信息,一个存储生产环境配置,一个存储非生产环境所有配置。分两个的目的是控制权限,生产环境仅特定人员可见。
问题:
由于VCS的账户密码存储在配置文件中,所以分两个git repo存储配置也是自欺欺人,可以直接根据配置文件中的VCS密码下载生产环境的配置信息。
解决:
对VCS密码进行加密
加密前的数据:
spring:
cloud:
config:
server:
uri: https://example.domain.com/helloworld.git
username: yourname
password: yourpwd
复制
加密后的数据:
spring:
cloud:
config:
server:
uri: https://example.domain.com/helloworld.git
username: username
password: ENC(DoyyHAMYaEyJBJHW496HiTT4VIazUYZo)
复制
如何使用jasypt
参考
jasypt
github文档最好,里面有更多信息,这里仅抛砖引玉,简单列举下使用步骤。
引入jasypt-spring-boot-starter依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
复制
###配置加/解的密码
以配置在
bootstrap.yml
中为例:
jasypt:
encryptor:
password: JH8AS90jasH
复制
默认使用
PBEWithMD5AndDES
加密算法,只有
jasypt.encryptor.password
是必要配置。
加密你的属性
假设需要加密DB密码,密码为123456
创建一个测试类,加密后得到的加密密码为:BsSPrDRNeU/Nb1v/GsHvZA==
@RunWith(SpringRunner.class)
@SpringBootTest
public class BlogApplicationTests {
@Autowired
StringEncryptor stringEncryptor;
@Test
public void test() {
System.out.println(stringEncryptor.encrypt("123456"));