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: 加密应用配置文件敏感信息
- Spring Boot: 加密应用配置文件敏感信息
- SpringBoot+spring-date-jpa+Hibernate 整合mysql 与sqlserver 配置文件信息
- 利用Jasypt如何对Spring Boot配置文件加密
- SpringBoot+spring-date-jpa+Hibernate 整合mysql 与sqlserver 配置文件信息
- springboot 整合 Mybatis (纯配置文件)
- spring 配置中,数据库相关信息如何加密放在属性文件中
- SpringBoot中加密包对配置文件中的密码进行加密
- Spring 中使用jasypt对配置文件(.properties)中密码加密
- Spring 中使用jasypt对配置文件(.properties)中密码加密
- Spring详解之四:SpringMVC整合Mybatis相关配置文件信息
- SpringBoot 不同环境读取不同的配置信息文件
- 采用DES加密方式对properties配置文件敏感信息加密处理
- SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)
- Eclipse安装了SpringSource Tool Suite插件后,编辑SpringBoot项目的yml配置文件仍然没有提示信息的解决办法
- spring boot整合shiro引用配置文件配置是出现的问题
- ssh整合:将hibernate的配置信息,配置到Spring的配置文件中(Spring整合hibernate)
- spring boot 读取配置文件信息
- Spring 中使用jasypt对配置文件(.properties)中密码加密
- 11-Spring Boot ( 获取配置文件信息 )