当前位置:   article > 正文

druid数据库密码加密_druid 密码加密

druid 密码加密

druid 配置数据库密码加密

一、springboot 使用密码加密

1.1 引入maven依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

1.2 获取加密密码
打开引入依赖的所在位置
在这里插入图片描述
1.3 在当前目录打开dos窗口
在这里插入图片描述
1.4 使用命令生成加密密码&密钥(两种命令二选一,推荐命令2方便后面复制使用)
命令1:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码
直接把密钥打印在dos窗口
命令2:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码 > pwd.txt
生成一个文件在当前目录下
在这里插入图片描述
1.6生成的文件
在这里插入图片描述

1.5 配置文件数据库连接
springboot有两种常用的配置文件,使用哪一种都OK
配置文件 public-key 对应 publicKey
配置文件password 对应 password
applicateion.properties

spring.datasource.url=jdbc:mysql://localhost:3306/db_jpa?serverTimezone=UTC
spring.datasource.username=root
# 生成的加密后的密码
spring.datasource.password=MjJJ2fhGNs6cZtnpFrkEeSvmRjQIQE50MQXNRViz9RE60Ga/YzQjXrEiO65CDx1wbRPAtYDj29O3tWwu9+8aDw==
# 生成的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKiUxZbptPIvD3c5fxkuqUP/M9HrzWJtaYgbiH2vBHI4Td4DJNd3zJbCY0kxbUiSGGR2V0lwJ7a0ZVaqHPiHPNcCAwEAAQ==
# 配置 connection-properties,启用加密,配置公钥。
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
# 启用ConfigFilter
spring.datasource.druid.filter.config.enabled=true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

注意:spring.datasource.druid.filter.config.enabled=true 不配置就会出错
application.yaml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      url: jdbc:mysql://127.0.0.1:3306/db_jpa?serverTimezone=UTC
      username: root
      password: MjJJ2fhGNs6cZtnpFrkEeSvmRjQIQE50MQXNRViz9RE60Ga/YzQjXrEiO65CDx1wbRPAtYDj29O3tWwu9+8aDw==
      connection-properties: config.decrypt=true;config.decrypt.key=${public-key}
      filter:
        config:
          enabled: true

public-Key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKiUxZbptPIvD3c5fxkuqUP/M9HrzWJtaYgbiH2vBHI4Td4DJNd3zJbCY0kxbUiSGGR2V0lwJ7a0ZVaqHPiHPNcCAwEAAQ==


#  连接 mysql 数据库配置
#  datasource:
#    url: jdbc:mysql://127.0.0.1:3306/db_jpa
#    username: root
#    password: Pass1234
#    driver-class-name: com.mysql.cj.jdbc.Driver
#    type: com.alibaba.druid.pool.DruidDataSource


# 驱动配置信息
#  spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#  spring.datasource.url = jdbc:mysql://127.0.0.1:3306/myspringboot
#  spring.datasource.username = your account
#  spring.datasource.password = your encryt password
#  spring.datasource.driverClassName = com.mysql.jdbc.Driver # 连接池的配置信息 # 初始化大小,最小,最大
#  spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置获取连接等待超时的时间
#  spring.datasource.maxWait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
#  spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒
#  spring.datasource.minEvictableIdleTimeMillis=300000
#  spring.datasource.validationQuery=SELECT 1 FROM DUAL
#  spring.datasource.testWhileIdle=true
#  spring.datasource.testOnBorrow=false
#  spring.datasource.testOnReturn=false # 打开PSCache,并且指定每个连接上PSCache的大小
#  spring.datasource.poolPreparedStatements=true
#  spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
#  spring.datasource.filters=config,stat,wall,log4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
#  spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;config.decrpt=true;config.decrypt.key=your public key
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

注意:
filter:
config:
enabled: true
不开起会报错

二、MVC 使用密码加密(非maven项目,maven项目获取加密密码依照springboot的方式)

2.1 下载 druid.jar 下载地址
在这里插入图片描述
2.2 找到下载好的目录打开dos窗口
在这里插入图片描述

2.3 使用命令生成加密密码&密钥(两种命令二选一,推荐命令2方便后面复制使用)
命令1:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码
直接把密钥打印在dos窗口
在这里插入图片描述

命令2:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码 > pwd.txt
生成一个文件在当前目录下
在这里插入图片描述

2.4编写xml文件

		<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
			<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
			<property name="url" value="jdbc:oracle:thin:@**.***.**.***:1521/****"></property>
			<property name="username" value="****"></property>
			<property name="password"
					  value="JXnxfjL78rQP3txJL295FucpV4aslSehNT9yhJypHemLcNu/yrRfzZTnKiP+4BjKqPtUzw5tW8iWBNGDeUEYsQ=="></property>
			<property name="filters" value="config" />
			<property name="connectionProperties"
					  value="config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKI6dkcdjT8wFLh6fk4D/Vp6Pub5oxhv34zQtgVGaM/KXD3dLkXtP/F0y2pDsLKDa7gocsuxzOrOIUuyVaovkBECAwEAAQ=="/>
		</bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

密钥配置在name=“connectionProperties” value="config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKI6dkcdjT8wFLh6fk4D/Vp6Pub5oxhv34zQtgVGaM/KXD3dLkXtP/F0y2pDsLKDa7gocsuxzOrOIUuyVaovkBECAwEAAQ=="
**config.decrypt=true;config.decrypt.key=**一定要写,要不绝壁报错,被坑过

上面这些都是直接配置在项目代码里的,这样的加密配置起始作用并不高,别人还是可以看到加密后的密码&密钥,安全程度并不高,大多上线后的项目密码都是配置在服务器上的,比如使用tomcat的数据源配置,使用jndi去连接就ok了。

三、使用jndi连接tomcat加密数据源

tomcat一般在linux服务器上部署,在tomcat的config目录下的context.xml文件中配置数据源
3.1 下载druid.jar
下载地址
在这里插入图片描述
3.2 把druid.jar包放入tomcat中的lib目录下一份
在这里插入图片描述

3.2 生成密钥
命令1:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码
在这里插入图片描述

命令2:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码 > pwd.txt
生成一个文件在当前目录下
在这里插入图片描述

3.3 编写context.xml文件
tomcat/config/context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource name="jdbc/oracledb"
      factory="com.alibaba.druid.pool.DruidDataSourceFactory"
      auth="Container"
      type="javax.sql.DataSource"
      url="jdbc:oracle:thin:@**.***.***.***:1521/****"
      driverClassName ="oracle.jdbc.driver.OracleDriver"
      username="***"
      password="JXnxfjL78rQP3txJL295FucpV4aslSehNT9yhJypHemLcNu/yrRfzZTnKiP+4BjKqPtUzw5tW8iWBNGDeUEYsQ=="
      initialSize = "30"
      maxActive="200"
      minIdle="30"
      maxWait="-1"
      testOnBorrow="true"
      validationQuery="select 1 from dual"
      connectionProperties = "config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKI6dkcdjT8wFLh6fk4D/Vp6Pub5oxhv34zQtgVGaM/KXD3dLkXtP/F0y2pDsLKDa7gocsuxzOrOIUuyVaovkBECAwEAAQ==" 
	  filters= "config,stat,wall"
     />
</Context>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

connectionProperties = “config.decrypt=true;config.decrypt.key={生成的公钥}”
这个一定要写完整,不然坑死你,咋启动都失败
3.4项目引用
web.xml

  <!-- 连接数据库配置 -->
  <resource-ref>
    <description>Datasource</description>
    <res-ref-name>jdbc/oracledb</res-ref-name> <!--context中设置的连接池的名字 -->
    <res-type>javax.sql.DataSource</res-type><!--context中导入的类 -->
    <res-auth>Container</res-auth><!-- 默认是容器,Tomcat-->
  </resource-ref>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

datasources.xml

	 	<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
	 		<property name="jndiName">
				<value>jdbc/oracledb</value>
			</property>
			<property name="resourceRef">
				<value>true</value>
			</property>
	  	</bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注意 jndiName&res-ref-name 对应的是 tomcat 中context.xml中的name名称,名字不能写错了,写错绝壁失败
使用jndi连接数据库如果不想使用加密的密码,在配置context.xml的时候就不用写connectionProperties这个配置,password换成没有被加密的密码就可以了
springboot使用的是mysql数据库,mvc使用的是oracle数据库

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/857064
推荐阅读
相关标签
  

闽ICP备14008679号