spring boot 2.1.X 学习之路——整合Druid(加密、解密)

spring boot 2.1.X 学习之路——整合Durid,数据库加解密

    • pom.xml添加配置
    • application.yml添加配置
    • 数据库加解密
      • Druid自带加解密
      • 自定义加解密规则

pom.xml添加配置

        
            com.alibaba
            druid-spring-boot-starter
            1.1.18
        

application.yml添加配置

具体配置项可以参照官方文档Druid配置

spring:
  application:
    name: system-service
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/yml?serverTimezone=UTC
      username: root
      password: 123456
      initial-size: 5
      min-idle: 10
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 2000

数据库加解密

运维和DBA都不希望把密码明文直接写在配置文件中,Druid提供了数据库密码加密的功能。
数据库密码加解密有两种方式,一种是druid自带的加密方式,还有一种是自定义配置时自定义加解密设置。

Druid自带加解密

druid加解密的工具类是ConfigTools类,首先获取Druid的jar包,并cmd至其目录下,比如我们需要加密的密码是123456,执行cmd命令

java -cp druid-1.0.16.jar com.alibaba.druid.filter.config.ConfigTools 123456

会获取到如下数据

privateKey:MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAl/8EoDUqBF+NAZuM9mTkAuu3vHbfDuu8sF5fGhrEHiqFEyI4HHO86ouCOK2OrfBRkb5VpBLDEw7GmCnj4HworQIDAQABAkBWb5Kc3L7hL8lLMb8u218C/jNFfMAKhyqNjY09lh0THa6UuwmYrk2tGaq007Jcb53DWkBKv/XJleYQDuYhJlmBAiEA4fHuRVI3zJ3Lq3MJmRoYUn7TKGMnVzANdclxYZs23aECIQCsNusbhKGm7fD84nW+VhW7wFGvW+Kv8NrrpDc7vxa3jQIgZs+MSTTROSUwMPKmkmkCWj9lXAJKO20dItSn5+8VtyECIAZX54UV95ZcgVnvRYMDTL2jsd6RteHhL08qt1YeDcopAiA1q6t1ih9glg7qLuHk9hDG2vl4GBn7sRCYyRx8n35YhQ==
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJf/BKA1KgRfjQGbjPZk5ALrt7x23w7rvLBeXxoaxB4qhRMiOBxzvOqLgjitjq3wUZG+VaQSwxMOxpgp4+B8KK0CAwEAAQ==
password:iOrc1JxbtOcXzC9hO8mVsANHbFoDVEs+IsivYpvkVJ48H3XfEWYztk78CFZOxYMQUGLa5yBI5TJsHCllW533LQ==

privateKey :加密私钥
publicKey :加密公钥
password :加密后的密码

然后修改配置文件application.yml

public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJf/BKA1KgRfjQGbjPZk5ALrt7x23w7rvLBeXxoaxB4qhRMiOBxzvOqLgjitjq3wUZG+VaQSwxMOxpgp4+B8KK0CAwEAAQ==

spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/yml?serverTimezone=UTC
      username: root
      password: iOrc1JxbtOcXzC9hO8mVsANHbFoDVEs+IsivYpvkVJ48H3XfEWYztk78CFZOxYMQUGLa5yBI5TJsHCllW533LQ==
      connection-properties: config.decrypt=true;config.decrypt.key=${public-key}
      filter:
        config:
          enabled: true
  1. password修改成加密后的密文
  2. 新增public-key属性(名称可以自定义),值为密文的公钥publicKey
  3. 设置开启加密,并指定公钥,开启configFilter。配置如下(${public-key}要与 第二步中名称一致)
connection-properties: config.decrypt=true;config.decrypt.key=${public-key}
filter:
        config:
          enabled: true

运行:
在这里插入图片描述

自定义加解密规则

自定义加解密规则的方式就是需要自己实例化DataSource

@Configuration
public class BeansConfiguration {

	@Value("${spring.datasource.druid.password})
	private String password;
	

	/**
	* 配置项可以根据实际需要进行配置,此处只配置地址、用户、密码
	* 各配置项的值可以自己随意配置key-value,也可以直接用默认的,获取的时候通过@Value注入进来
	*/
    @Bean("dataSource")
    @Scope(ConfigurableListableBeanFactory.SCOPE_SINGLETON)
    public DataSource getDataSource(){
        System.out.println(name);
        System.out.println("创建数据连接池");
        DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
        dataSource.setUsername("root");
        //在setPassword之前可以对密码进行自定义解密
        dataSource.setPassword(password);
        dataSource.setUrl("jdbc:mysql://localhost:3306/yml?serverTimezone=UTC");
        System.out.println("数据连接池创建成功");
        return dataSource;
    }
}

你可能感兴趣的:(java,spring,boot,druid)