美文网首页
SpringBoot加密配置属性

SpringBoot加密配置属性

作者: huan1993 | 来源:发表于2021-10-19 09:01 被阅读0次

    一、背景

    在系统中的运行过程中,存在很多的配置属性,比如: 数据库配置、阿里云配置 等等,这些配置有些属性是比较敏感的,是不应直接以明文的方式出现在配置文件中,因此对于这些配置我们就需要加密来处理。

    二、需求

    先如今我们系统中存在如下数据库配置,其中数据库的密码数据库的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

    相关文章

      网友评论

          本文标题:SpringBoot加密配置属性

          本文链接:https://www.haomeiwen.com/subject/ksoooltx.html