乐趣区

关于后端:SpringBoot加密配置属性

一、背景

在零碎中的运行过程中,存在很多的配置属性,比方: 数据库配置、阿里云配置 等等,这些配置有些属性是比拟敏感的,是不应间接以明文的形式呈现在配置文件中,因而对于这些配置咱们就须要加密来解决。

二、需要

先现在咱们零碎中存在如下数据库配置,其中 数据库的明码 数据库的 url属于敏感配置,在配置文件中须要加密展现,而不应该应用明文展现.

# 此属性的值须要加密展现
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/seata_account?useUnicode=true&characterEncoding=utf8&autoReconnectForPools=true&useSSL=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
# 此属性的值须要加密展现
spring.datasource.password=root

配置的加密 咱们实用 github 上 https://github.com/ulisesbocchio/jasypt-spring-boot 这个开源我的项目来实现。

三、实现步骤

1、引入 jar 包

<!-- 配置加密(start) -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.4</version>
</dependency>
<!-- 配置加密(end) -->

2、配置加密配置

vi application.properties


# 加密的密钥,这个值特地重要,倡议做成零碎的环境变量或通过 jar 启动的时候传递进去
jasypt.encryptor.password=123456789

jasypt.encryptor.property.prefix=ENC(jasypt.encryptor.property.suffix=)
jasypt.encryptor.string-output-type=base64

留神:
上方有一个 jasypt.encryptor.password 配置属性,这个属性的值倡议通过 jar 包启动的时候通过 -D 参数执行,而不要写在配置文件中。

3、加密属性

1、获取加密属性的值

加密属性,官网提供了通过 maven 插件 代码 的形式来加密,此处采纳 代码 的形式来加密。

当咱们引入了 jasypt-spring-boot-starter 这个 jar 包,就主动配置了一个 StringEncryptor实例,能够用来加解密属性。这个 StringEncryptor 这个实例咱们也能够本人提供来笼罩默认的。

2、配置文件中替换加密的值

4、查看运行后果


从上图中可知:

  1. 配置文件的属性被加密了。
  2. 数据源能够获取到正确的连贯。
  3. 程序运行时配置是解密的。

四、残缺代码

https://gitee.com/huan1993/spring-cloud-parent/tree/master/springboot/springboot-encrypt-config

五、参考链接

1、https://github.com/ulisesbocchio/jasypt-spring-boot

退出移动版