说明

pig4cloud 采用的是 jasypt 配置文件加密方案 。

[success] 所有的敏感信息 均使用 ENC(密文) 形式进行配置

  • 配置根密钥

配置文件加解密 - 图1

image.png

  • 特别说明

[warning] 根密钥和密文是一套,若密钥更改,则所有密文需要重新加密配置。 且原文内容 不能随意修改

  1. # 密文、根密钥不匹配 报错如下
  2. Description:
  3. Failed to bind properties under 'security.oauth2.client.client-id' to java.lang.String:
  4. Reason: Failed to bind properties under 'security.oauth2.client.client-id' to java.lang.String

原理解析

  1. Maven依赖
  1. <dependency>
  2. <groupId>com.github.ulisesbocchio</groupId>
  3. <artifactId>jasypt-spring-boot-starter</artifactId>
  4. <version>1.16</version>
  5. </dependency>
  1. 配置
  1. jasypt:
  2. encryptor:
  3. password: foo #根密码
  1. 使用JAVA 方法调用 (不依赖 spring 容器)
  1. /**
  2. * jasypt.encryptor.password 对应 配置中心 application-dev.yml 中的密码
  3. */
  4. @Test
  5. public void testEnvironmentProperties() {
  6. System.setProperty(JASYPT_ENCRYPTOR_PASSWORD, "lengleng");
  7. StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment());
  8. //加密方法
  9. System.out.println(stringEncryptor.encrypt("123456"));
  10. //解密方法
  11. System.out.println(stringEncryptor.decrypt("saRv7ZnXsNAfsl3AL9OpCQ=="));
  12. }

4 配置文件中使用密文

  1. spring:
  2. datasource:
  3. password: ENC(密文)
  4. xxx: ENC(密文)

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

总结

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

❤ 问题咨询

手势点击蓝字求关注简约风动态引导关注__2022-09-07+23_18_38.gif