今日在SpringBoot項目中想加密數據庫的明文密碼, 因爲覺得直接將數據庫密碼暴露在配置文件中覺得不太安全,同時在項目中也使用了阿里的Druid數據源,早就知道該數據源提供了加密 、數據庫監控等功能,於是就想使用加密功能,在網上找了許多文章,發現都不是很簡潔,於是整理了一份相對簡單的配置,實現加密。
步驟如下:
1. 首先在項目中引入 依賴:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
2. 使用druid的jar生成RSA密碼 。
在maven倉庫中找到 druid-1.1.9.jar ,如下圖:
在此目錄打開Powershell窗口 : Ctrl+Shift +右鍵 ,假定數據庫密碼爲000 , 輸入下面命令, 生成的密碼和密鑰將會放入同級目錄下的aaa.txt文件中。
java -cp .\druid-1.1.9.jar com.alibaba.druid.filter.config.ConfigTools 000000 >aaa.txt
生成的publicKey和 password就是需要我們放入配置文件的數據。
3. 修改SpringBoot的配置文件。
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
driver-class-name: com.mysql.jdbc.Driver
username: root
password: YoTsY6BJ8oeMy7eAHI/BXBq+CVsyT5n43VN2nH0OIFYl6HwoezgDbmx5SsmlFHO3Lt2+jUXHPfIBbJLfGt5iQQ==
type: com.alibaba.druid.pool.DruidDataSource
publickey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMqpkzvFZv4UrIH23ITxnZXGIxuwJFTgOGXERjIpOYWWD0/VObIjjxI+WXfvSUktafs/4ET34ZpYgY1dirUHtGsCAwEAAQ==
druid:
filter:
config:
enabled: true
connection-properties: config.decrypt=true;config.decrypt.key=${spring.datasource.publickey}
將第二部產生的publicKey 和password 放入配置文件,並開啓druid的解密功能。啓動SpringBoot項目, 測試數據庫連接。