Spring Boot: 加密应用配置文件敏感信息


声明:本文转载自https://my.oschina.net/giegie/blog/1587694,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

背景

  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。 JDK8的下载地址

  2. 配置config serve encrypt.key=foo

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

curl localhost:4001/encrypt -d lengleng 密文  
  1. 配置文件使用密文
spring:   datasource:     password: '{ciper}密文'  xxx: '{ciper}密文'          
  1. 其他的非对称加密等高级配置,参考官方文档。注意一个bug (No key was installed for encryption service

jasypt 的解决方案

  1. Maven依赖
<dependency>     <groupId>com.github.ulisesbocchio</groupId>     <artifactId>jasypt-spring-boot-starter</artifactId>     <version>1.16</version> </dependency> 
  1. 配置
jasypt:   encryptor:     password: foo #根密码 
  1. 调用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")); 	}  }  
  1. 配置文件中使用密文
spring:   datasource:     password: ENC(密文)  xxx: ENC(密文) 
  1. 其他非对称等高级配置参考

总结

  1. Spring Cloud Config 提供了统一的加解密方式,方便使用,但是如果应用配置没有走配置中心,那么加解密过滤是无效的;依赖JCE 对于低版本spring cloud的兼容性不好。
  2. jasypt 功能更为强大,支持的加密方式更多,但是如果多个微服务,需要每个服务模块引入依赖配置,较为麻烦;但是功能强大 、灵活。
  3. 个人选择 jasypt
  4. 源码参考: 基于Spring Cloud、JWT 的微服务权限系统设计

本文发表于2017年12月11日 10:38
(c)注:本文转载自https://my.oschina.net/giegie/blog/1587694,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 3845 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1