您的位置:首页 > 编程语言 > Java开发

Jasypt : 整合spring boot加密应用配置文件敏感信息

2017-12-11 09:37 961 查看

背景

我们的应用之前使用的是Druid数据库连接池,由于需求我们迁移到HikariCP连接池,druid 数据源加密提供了多种方式:

可以在配置文件my.properties中指定config.decrypt=true

也可以在DruidDataSource的ConnectionProperties中指定config.decrypt=true

也可以在jvm启动参数中指定-Ddruid.config.decrypt=true

但是HikariCP 默认没有提供实现数据源加解密的方法

应用中会存在多个需要配置敏感信息(比如stfp等),都需要加密,类似于druid加解密方式依赖于工具类的实现,没有统一的加解密标准,麻烦、而且不好维护。

Spring Cloud Config 的解决方案

Config Server 加解密依赖JDK的JCE。
JDK8的下载地址

配置config serve encrypt.key=foo

使用config server 提供的加解密接口生成密文

curl localhost:4001/encrypt -d lengleng
密文


配置文件使用密文

spring:
datasource:
password: '{ciper}密文'

xxx: '{ciper}密文'


其他的非对称加密等高级配置,参考官方文档。注意一个bug (No key was installed for encryption service

jasypt 的解决方案

Maven依赖

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


配置

jasypt:
encryptor:
password: foo #根密码


调用JAVA API 生成密文

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = PigAdminApplication.class)
public class PigAdminApplicationTest {
@Autowired
private StringEncryptor stringEncryptor;

@Test
public void testEnvironmentProperties() {
System.out.println(stringEncryptor.encrypt("lengleng"));
}

}


配置文件中使用密文

spring:
datasource:
password: ENC(密文)

xxx: ENC(密文)


其他非对称等高级配置参考

总结

Spring Cloud Config 提供了统一的加解密方式,方便使用,但是如果应用配置没有走配置中心,那么加解密过滤是无效的;依赖JCE 对于低版本spring cloud的兼容性不好。

jasypt 功能更为强大,支持的加密方式更多,但是如果多个微服务,需要每个服务模块引入依赖配置,较为麻烦;但是功能强大 、灵活。

个人选择 jasypt

源码参考: 基于Spring Cloud、JWT 的微服务权限系统设计
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring Boot
相关文章推荐