目錄
場景說明:基於應用服務器部署的要求,需要對部署應用工程涉及數據庫密碼的配置文件,進行加密或者密文設置;明文設置有安全風險,若是應用服務器被攻克,假如你的數據庫密碼是密文,那麼你的數據庫的所有數據也會被爬光的,若是涉及敏感數據,後果不堪設想。
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私鑰了? 重複檢查,如果不行,請重新來過。