参考文章链接
https://blog.csdn.net/Lee_0220/article/details/117388962
druid密码加密
官网链接
https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
生成公钥、私钥及密码
找到druid-1.2.6.jar的位置,切换到该目录,使用如下命令生成公钥和密码(注意:如果密码包含特殊字符,需要使用单引号''引起来):
java -cp druid-1.2.6.jar com.alibaba.druid.filter.config.ConfigTools 'yourpassword'
然后修改spring boot配置如下:
spring:
application:
name: restsrv
datasource:
name: druidDataSource
type: com.alibaba.druid.pool.DruidDataSource
dynamic:
enable: true
druid:
filter:
config:
enabled: true # 启动ConfigFilter
# JDBC 配置(驱动类自动从url的mysql识别,数据源类型自动识别)
url: jdbc:oracle:thin:@10.152.30.148:1521:orcl
username: linkage_lcfa
password: AMNQ6kkdspSTcyr/foPswA==
driver-class-name: oracle.jdbc.driver.OracleDriver
connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKAwEAAQ==
#连接池配置(通常来说,只需要修改initialSize、minIdle、maxActive
initial-size: 1
max-active: 20
min-idle: 1
# 配置获取连接等待超时的时间
max-wait: 60000
#打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
validation-query: SELECT sysdate from dual
test-on-borrow: false
test-on-return: false
test-while-idle: true
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
#配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
filters: stat,wall
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
#是否启用StatFilter默认值true
web-stat-filter.enabled: true
web-stat-filter.url-pattern: /*
web-stat-filter.exclusions: "*.js , *.gif ,*.jpg ,*.png ,*.css ,*.ico , /druid/*"
web-stat-filter.session-stat-max-count: 1000
web-stat-filter.profile-enable: true
# StatViewServlet配置
#展示Druid的统计信息,StatViewServlet的用途包括:1.提供监控信息展示的html页面2.提供监控信息的JSON API
#是否启用StatViewServlet默认值true
stat-view-servlet.enabled: true
#根据配置中的url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html例如:
#http://192.168.2.3:9000/druid/index.html
#http://192.168.2.3:8080/mini-web/druid/index.html
stat-view-servlet.url-pattern: /druid/*
#允许清空统计数据
stat-view-servlet.reset-enable: true
stat-view-servlet.login-username: admin
stat-view-servlet.login-password: 0ac11887db
#StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部情况,如果你需要做访问控制,可以配置allow和deny这两个参数
#deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。如果allow没有配置或者为空,则允许所有访问
#配置的格式
#<IP>
#或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24
#24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配,不支持IPV6。
#stat-view-servlet.allow=
#stat-view-servlet.deny=128.242.127.1/24,128.242.128.1
# Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
#aop-patterns= # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
说明:仅需要修改以下配置即可:
1. 启用filter config
2. password配置生成的加密串
3. connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKAwEAAQ
按照以上格式配置connection-properties
baomidou的dynamic-datasource配置数据库加密
dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。官网地址:https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter
该框架自带加密 ENC()。
经过查看源码发现, 该框架使用自带的加密工具类com.baomidou.dynamic.datasource.toolkit.CryptoUtils进行加解密, 且自带有公钥私钥, 所以直接使用此工具类加密我们的明文密码, 然后用ENC()包裹即可实现加解密。
调用加密方法,加密数据库用户名和密码
public class PwdUtilTest {
public static void main(String[] args) {
// 假如我们的密码为hello
String password = null;
try {
password = CryptoUtils.encrypt("hello");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(password);
}
}
配置配置文件
spring:
datasource:
dynamic:
primary: master
datasource:
master:
url: jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false
username: root
# 用ENC将密码包裹起来
password: ENC(VZamSTMi224AH6RUtJGXNldiDp/XEL2ozRhBUu/o9ChodT4JEb9kE/....)
文章评论