说明
pig4cloud 采用的是 jasypt
配置文件加密方案 。
[success] 所有的敏感信息 均使用 ENC(密文) 形式进行配置
- 配置根密钥
- 访问 enc.pig4cloud.com 在线加密
- 特别说明
[warning] 根密钥和密文是一套,若密钥更改,则所有密文需要重新加密配置。 且原文内容 不能随意修改
# 密文、根密钥不匹配 报错如下
Description:
Failed to bind properties under 'security.oauth2.client.client-id' to java.lang.String:
Reason: Failed to bind properties under 'security.oauth2.client.client-id' to java.lang.String
原理解析
- Maven依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.16</version>
</dependency>
- 配置
jasypt:
encryptor:
password: foo #根密码
- 使用JAVA 方法调用 (不依赖 spring 容器)
/**
* jasypt.encryptor.password 对应 配置中心 application-dev.yml 中的密码
*/
@Test
public void testEnvironmentProperties() {
System.setProperty(JASYPT_ENCRYPTOR_PASSWORD, "lengleng");
StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment());
//加密方法
System.out.println(stringEncryptor.encrypt("123456"));
//解密方法
System.out.println(stringEncryptor.decrypt("saRv7ZnXsNAfsl3AL9OpCQ=="));
}
4 配置文件中使用密文
spring:
datasource:
password: ENC(密文)
xxx: ENC(密文)
总结
- Spring Cloud Config 提供了统一的加解密方式,方便使用,但是如果应用配置没有走配置中心,那么加解密过滤是无效的;依赖JCE 对于低版本spring cloud的兼容性不好。
- jasypt 功能更为强大,支持的加密方式更多,但是如果多个微服务,需要每个服务模块引入依赖配置,较为麻烦;但是功能强大 、灵活。
- 个人选择 jasypt