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包
com.github.ulisesbocchio
jasypt-spring-boot-starter
3.0.4
2、配置加密配置
vi application.properties
# 加密的密钥,这个值特别重要,建议做成系统的环境变量或通过jar启动的时候传递进去
jasypt.encryptor.password=123456789jasypt.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、配置文件中替换加密的值
【SpringBoot加密配置属性】
文章图片
4、查看运行结果
从上图中可知:
- 配置文件的属性被加密了。
- 数据源可以获取到正确的连接。
- 程序运行时配置是解密的。
五、参考链接 1、https://github.com/ulisesbocchio/jasypt-spring-boot
推荐阅读
- 对称加密和非对称加密的区别
- vue-cli|vue-cli 3.x vue.config.js 配置
- Activiti(一)SpringBoot2集成Activiti6
- Android中的AES加密-下
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 从战略性的角度可以配置股票
- iOS|iOS 笔记之_时间戳 + DES 加密
- springboot使用redis缓存
- 缓存有关的配置和属性