前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jasypt : 整合spring boot加密应用配置文件敏感信息

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

作者头像
冷冷
发布2018-02-08 12:11:53
1.9K0
发布2018-02-08 12:11:53
举报
文章被收录于专栏:冷冷

背景

  1. 我们的应用之前使用的是Druid数据库连接池,由于需求我们迁移到HikariCP连接池,druid 数据源加密提供了多种方式:
  • 可以在配置文件my.properties中指定config.decrypt=true
  • 也可以在DruidDataSource的ConnectionProperties中指定config.decrypt=true
  • 也可以在jvm启动参数中指定-Ddruid.config.decrypt=true 但是HikariCP 默认没有提供实现数据源加解密的方法
  1. 应用中会存在多个需要配置敏感信息(比如stfp等),都需要加密,类似于druid加解密方式依赖于工具类的实现,没有统一的加解密标准,麻烦、而且不好维护。

Spring Cloud Config 的解决方案

  1. Config Server 加解密依赖JDK的JCE。
  2. 配置config serve encrypt.key=foo
  3. 使用config server 提供的加解密接口生成密文
代码语言:javascript
复制
curl localhost:4001/encrypt -d lengleng
密文
  1. 配置文件使用密文
代码语言:javascript
复制
spring:
  datasource:
    password: '{ciper}密文'

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

jasypt 的解决方案

  1. Maven依赖
代码语言:javascript
复制
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>1.16</version>
</dependency>
  1. 配置
代码语言:javascript
复制
jasypt:
  encryptor:
    password: foo #根密码
  1. 调用JAVA API 生成密文
代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = PigAdminApplication.class)
public class PigAdminApplicationTest {
	@Autowired
	private StringEncryptor stringEncryptor;

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

}
  1. 配置文件中使用密文
代码语言:javascript
复制
spring:
  datasource:
    password: ENC(密文)

xxx: ENC(密文)
  1. 其他非对称等高级配置参考

总结

  1. Spring Cloud Config 提供了统一的加解密方式,方便使用,但是如果应用配置没有走配置中心,那么加解密过滤是无效的;依赖JCE 对于低版本spring cloud的兼容性不好。
  2. jasypt 功能更为强大,支持的加密方式更多,但是如果多个微服务,需要每个服务模块引入依赖配置,较为麻烦;但是功能强大 、灵活。
  3. 个人选择 jasypt
  4. 源码参考: 基于Spring Cloud、JWT 的微服务权限系统设计
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • Spring Cloud Config 的解决方案
  • jasypt 的解决方案
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档