jasypt 暗号化データベースのユーザー名とパスワード

本番環境のデータベースのパスワードをgithubにアップロードするのは安全ではないため、暗号化の方法を検討しています この記事は最新バージョン3.0.3の紹介に基づいています

1. Maven の依存関係を導入する

<dependency>
	<groupId>com.github.ulisesbocchio</groupId>
	<artifactId>jasypt-spring-boot-starter</artifactId>
	<version>3.0.3</version>
</dependency>

<plugin>
	<groupId>com.github.ulisesbocchio</groupId>
	<artifactId>jasypt-maven-plugin</artifactId>
</plugin>

2.application.yml を構成する

jasypt:
  encryptor:
    password: shenjian #盐值

3. プラグイン コマンドを使用して、暗号化された値を取得します。

mvn jasypt:encrypt-value -Djasypt.encryptor.password="shenjian" -Djasypt.plugin.value="root"

暗号化後の結果は、下の図からわかるように、3.0.3 はデフォルトで PBEWITHHMACSHA512ANDAES_256 暗号化アルゴリズムを使用します。

現在の結果を解読する

mvn jasypt:decrypt-value -Djasypt.encryptor.password="shenjian" -Djasypt.plugin.value="CbKzV4JPAIGLmGjNyNRgVJ8t6JN7xRW2lPh24VigJryoli/wAlNwbabHR8gIt0bM"

復号化された結果

復号化できるので、後で説明するソルト値へのアクセスがより重要になります。

4.暗号化されたデータベースを構成する

spring:
  # Mysql数据源
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/photo?serverTimezone=Asia/Shanghai&characterEncoding=utf8
    username: ENC(CbKzV4JPAIGLmGjNyNRgVJ8t6JN7xRW2lPh24VigJryoli/wAlNwbabHR8gIt0bM)
    password: ENC(R5BPqaEh0oa+fgAqthW0eFTMuooFHEjOglQ8o38gvEFTiCtORllppbF+932zh5Zc)
    driver-class-name: com.mysql.cj.jdbc.Driver

プロジェクトは springboot ベースであるため、スタートアップ クラスに @SpringBootApplication アノテーションがある限り

5. 起動パラメータにソルト値を追加

先ほど、暗号化された値は復号化できることがわかりましたので、設定ファイルにソルト値の設定が存在しません.application.yml のソルト値の設定を削除するには、起動パラメータの設定を使用するか、環境変数から取得します。次のように

方法 1: アイデアの開始時にパラメーターを追加する

--jasypt.encryptor.password=shenjian

方法 2: springboot の起動時にパラメーターを追加する

java -jar photo-api-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=shenjian

方法 3: Linux 環境変数からソルト値を取得する

# 进入环境变量设置文件
vim /etc/profile 
# 在最后一行添加变量
export JASYPT_PASSWORD=shenjian
# 启动项目
java -jar photo-api-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=${JASYPT_PASSWORD}

6. よくある質問

1)原因: java.lang.SecurityException: ポリシーまたはフレームワーク ファイルが見つかりません!

分析: 3.0.3 で使用されているアルゴリズムは java8 のセキュリティ ポリシーに含まれていない可能性があるため、次のようにjce_policy-8を手動でダウンロードし、jar パッケージを ${JAVA_HOME}/jre/lib/security に配置する必要があります。下図:


公式アカウントのアルゴリズムのニッチに注目してください

おすすめ

転載: blog.csdn.net/SJshenjian/article/details/130302988