druid加密 springboot application.properties配置文件數據庫密碼加密

目錄

場景說明:基於應用服務器部署的要求,需要對部署應用工程涉及數據庫密碼的配置文件,進行加密或者密文設置;明文設置有安全風險,若是應用服務器被攻克,假如你的數據庫密碼是密文,那麼你的數據庫的所有數據也會被爬光的,若是涉及敏感數據,後果不堪設想。

1、引入druid包

2、找到druid.jar

3、加密密文和生成公鑰、私鑰(一氣呵成)

4、配置數據庫連接文件

5、測試驗證


場景說明:基於應用服務器部署的要求,需要對部署應用工程涉及數據庫密碼的配置文件,進行加密或者密文設置;明文設置有安全風險,若是應用服務器被攻克,假如你的數據庫密碼是密文,那麼你的數據庫的所有數據也會被爬光的,若是涉及敏感數據,後果不堪設想。

 

1、引入druid包

maven工程參考如下:

<dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid-spring-boot-starter</artifactId>
       <version>1.1.18</version>
</dependency>

2、找到druid.jar

本人使用的ECELIPSE工具,可以右鍵工程,查看屬性。參照下圖找到jar包位置

 

找到此目錄,並打開你本機的DOS終端(嘿嘿的界面),並切換到JAR目錄,如下所示:

3、加密密文和生成公鑰、私鑰(一氣呵成)

然後輸入以下命令

java -cp druid-1.1.18.jar com.alibaba.druid.filter.config.ConfigTools wwwwww > encode.txt

意思是將密碼明文wwwwww進行加密,將結果輸出到文件encode.txt(自動創建此文件)

執行後,當前目錄會出現文件:encode.txt

 

4、配置數據庫連接文件

有了這兩項法寶,就可以配置我們的配置文件了,以下配置是mysql的配置

application.properties配置舉例:


# 數據源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# 主庫數據源
spring.datasource.druid.url=jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.druid.username=test
spring.datasource.druid.password=AmVPLGYSVTOf5P3f7qb6G+4jsed+DUrS6qlhwRH3Ee6d3/pYlQy25B5ElIUJiJLagNJnWA36FttCIok0FPVy2Q==
spring.datasource.druid.connect-properties.config.decrypt=true
spring.datasource.druid.connect-properties.config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL/xbyiyIbq2r4oHWdkKMH5Gp5HNEl3je/amTco7yMFVZtanMOMvH5NirM08qayfbdHHTENCmd4zNqiThOL7DbkCAwEAAQ==

# 初始連接數
spring.datasource.druid.initialSize=5
# 最小連接池數量
spring.datasource.druid.minIdle=10
# 最大連接池數量
spring.datasource.druid.maxActive=200
# 配置獲取連接等待超時的時間
spring.datasource.druid.maxWait=60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
# 配置一個連接在池中最小生存的時間,單位是毫秒
spring.datasource.druid.minEvictableIdleTimeMillis=300000
# 配置一個連接在池中最大生存的時間,單位是毫秒
spring.datasource.druid.maxEvictableIdleTimeMillis=900000
# 配置檢測連接是否有效
spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.testOnBorrow=false
spring.datasource.druid.testOnReturn=false
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.stat-view-servlet.enabled=true
# 設置白名單,不填則允許所有訪問
spring.datasource.druid.stat-view-servlet.allow=
spring.datasource.druid.stat-view-servlet.url-pattern=/monitor/druid/*
spring.datasource.druid.filter.stat.enabled=true
# 慢SQL記錄
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1000
spring.datasource.druid.filter.stat.merge-sql=true
spring.datasource.druid.filter.wall.config.multi-statement-allow=true
#數據庫過濾器
spring.datasource.druid.filter.config.enabled=true

非常關鍵的地方來了:

這個沒配置,就沒法通過過濾器解析配置的密文了
spring.datasource.druid.filter.config.enabled=true

spring.datasource.druid.connect-properties.config.decrypt.key

複製encode.txt中的pubicKey的值

spring.datasource.druid.password

複製encode.txt中的password的值

5、測試驗證

若是不行,可查看是否複製的值有漏掉的,或者decrypt.key的值錯誤的設置爲privateKey私鑰了? 重複檢查,如果不行,請重新來過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章