SpringBoot配置文件加密數據庫密碼的一種解決方案

今日在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項目, 測試數據庫連接。

 

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