说明

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

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

配置根密钥

在线加密工具

访问 enc.pig4cloud.com 进行在线加密

特别说明

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

# 密文、根密钥不匹配 报错如下 
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

原理解析

1. Maven 依赖

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>1.16</version>
</dependency>

2. 配置

jasypt:
  encryptor:
    password: foo #根密码

3. 使用 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(密文)

5. 其他配置参考

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

总结

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

♥️ 获取支持

遇到问题?

如果您在使用过程中遇到任何问题、有功能建议或需求,请点击此卡片前往 Gitee 仓库提交 Issue。