1はじめに
前回の記事で、私たちがご紹介しJasypt
、その使用を、あなたは詳細を表示することができます[Javaの]どのようにあなたの機密情報を保護するために暗号化ライブラリJasyptの優れたライブラリを使用するには?。それを適切に使用するような武器は、それがより効果的になります。この記事では紹介しますSpringbootの統合をJasypt
、データベース接続、口座番号やパスワードなどのセキュリティ設定情報、インターフェイスの資格情報を達成するために、。
Jasyptは、情報Springbootロットを暗号化することができます:
- システムプロパティシステム変数
- Envirnmentプロパティ環境変数
- コマンドライン引数コマンドラインパラメータ
- Application.propertiesアプリケーション構成ファイル
- YAMLのプロパティアプリケーションプロファイル
- 他のカスタムプロパティ源他の設定ファイル
本明細書で使用されるテストした後、3.0.0および2.1.2は、2.1.1成功をjasyptスプリング・ブーツの最新バージョンで問題Springboot 2.1.9バージョンを持っています。
2依存性を結合する方法
Jasyptは、他のオープンソースプロジェクトであるSpringbootに統合Jasypt-春ブーツ、統合するための3つの主な方法があります。
2.1 jasyptスプリングブートスタータ
プロジェクトの使用している場合@SpringBootApplication
や@EnableAutoConfiguration
、注釈、全体春環境の暗号化と復号化の構成情報に依存することができPOMに次のように追加します。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2.2 jasyptスプリングブート
プロジェクトが使用されていない場合@SpringBootApplication
や@EnableAutoConfiguration
、注釈、我々は以下の使用に依存して、Javaクラス構成で注釈を追加します@EnableEncryptableProperties
。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>2.1.1</version>
</dependency>
次のようにコンフィギュレーション・クラスは次のとおりです。
@Configuration
@EnableEncryptableProperties
public class MyApplication {
}
2.3暗号化された特定の構成を解読
あなたが暗号化と復号化のためのすべての構成情報の組み合わせを使用したくない場合は、注釈を使用することができ@EncryptablePropertySource
、次のように依存して、設定ファイルを指定します。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>2.1.1</version>
</dependency>
次のようにコンフィギュレーション・クラスは次のとおりです。
@Configuration
@EncryptablePropertySource(name = "EncryptedProperties", value = "classpath:encrypted.properties")
public class MyApplication {
}
図3は、暗号化された文字を生成し、
実際にはいくつかの方法を使用して暗号化文字を生成するための多くの方法があります。
3.1 Javaのコマンドライン
次のようにJasyptは、暗号化と復号化、mainメソッド、呼び出しのために特別クラスを提供します。
java -cp ./jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=pkslow algorithm=PBEWithMD5AndTripleDES input=larry
出力は次のようになります。
----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.212-b10
----ARGUMENTS-------------------
input: larry
algorithm: PBEWithMD5AndTripleDES
password: pkslow
----OUTPUT----------------------
SUfiOs8MvmAUjg+oWl/6dQ==
3.2スクリプトコマンド
Jasyptは、スクリプトを提供してくれます直接暗号化と復号化に使用することができ、http://www.jasypt.org/download.htmlからダウンロードすることができます。ダウンロードした後、あるファイルを解凍します。
# 解压后文件
LICENSE.txt NOTICE.txt README.txt apidocs bin lib
# bin文件夹的文件
decrypt.bat decrypt.sh
digest.bat digest.sh
encrypt.bat encrypt.sh
listAlgorithms.bat listAlgorithms.sh
以下のbinディレクトリでは、我々は同じパラメータとJavaコマンドを使用して、独自のシステムに応じて暗号文生成するためにどのようなスクリプトを選択することができます。実際には、スクリプトは、Javaクラスが呼び出しをカプセル化するためのツールです。次のように使用します。
$ sh encrypt.sh password=pkslow algorithm=PBEWithMD5AndTripleDES input=larry
----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.212-b10
----ARGUMENTS-------------------
input: larry
algorithm: PBEWithMD5AndTripleDES
password: pkslow
----OUTPUT----------------------
xRvdeEnk7zgKtX5uVGCIug==
3.3 Javaコード
それはJavaライブラリであるので、確かにJavaへの暗号化されたコードを復号化するために使用することができます。具体的な内容は、参照することができ、あなたの機密情報を保護するための優れたライブラリのライブラリJasypt暗号化を使用する方法[Javaの]?。
4暗号文とその他の項目
4.1暗号文
暗号文の後に、暗号文は次のように対応する位置を取るように配置されました。
username: ENC(SUfiOs8MvmAUjg+oWl/6dQ==)
jasypt:
encryptor:
password: pkslow
algorithm: PBEWithMD5AndTripleDES
暗号テキスト形式のデフォルト:ENC(暗号文)、このフォーマットすることができますjasypt.encryptor.property.prefix
し、jasypt.encryptor.property.suffix
コンフィギュレーション、ここではありませんデモ。
4.2その他の構成項目
唯一の構成情報jasypt.encryptor.passwordが必要で、設定項目は以下のとおりです。
構成アイテム | しなければなりません | デフォルト値 |
---|---|---|
jasypt.encryptor.password | 真 | - |
jasypt.encryptor.algorithm | 偽 | PBEWITHHMACSHA512ANDAES_256 |
jasypt.encryptor.keyObtentionIterations | 偽 | 1000年 |
jasypt.encryptor.poolSize | 偽 | 1 |
jasypt.encryptor.providerName | 偽 | SunJCE |
jasypt.encryptor.providerClassName | 偽 | ヌル |
jasypt.encryptor.saltGeneratorClassname | 偽 | org.jasypt.salt.RandomSaltGenerator |
jasypt.encryptor.ivGeneratorClassname | 偽 | org.jasypt.iv.RandomIvGenerator |
jasypt.encryptor.stringOutputType | 偽 | BASE64 |
jasypt.encryptor.proxyPropertySources | 偽 | 偽 |
5あなたのキーを配置する方法
あなたが暗号文が本当に安全な決定した場合、キーは、どのように非常に重要な情報です。カテゴリ次のような方法があるかもしれません。
(1)application.propertiesに
このような人々はキーではなく、安全に十分のプロフィールを知ってもらうことができるようになります。しかし、それは便利で簡単な方法です。同じリスクプロファイル上の暗号文と鍵があります。
(2)JVMパラメータ
あなたは、Javaプログラムに加えてパラメータを起動すると:-Djasypt.encryptor.password=pkslow
、行くためにコードにキーを入れないように。
環境変数(3)サーバー
Linuxシステム上の重要な環境変数は、サーバーへのアクセスを取得できるようにするには、キーを知っている可能性が高いです。例えば:
# 配置profile文件
export JASYPT_PASSWORD = pkslow
# 生效
source /etc/profile
# 运行java程序时
java -jar -Djasypt.encryptor.password=${JASYPT_PASSWORD} xxx.jar
カスタムEncryptorはを保存する(4)使用
我々はEncryptorは公式を使用している上に、以下のように、実際には、我々はカスタマイズすることができます。
@Bean("jasyptStringEncryptor")
public StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword("password");
config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
コード自体に鍵は、人々が唯一の暗号文を得るために、jarファイルパッケージおよび逆コンパイルを取得します。
私たちは、コード自体にキーの一部を取る場合は、他の部分はより安全になり、外部の手段、で構成されています。
6つの試験結果
次のように通常の復号化、テストコードがあるかどうかを私たちは、暗号文の生成を完了した、と今、私たちはテストする必要があります:
@RestController
@RequestMapping("/jasypt")
public class JasyptController {
@Value("${username}")
private String username;
@GetMapping("/name")
public Mono<String> sendNormalText() {
return Mono.just(username);
}
}
アクセスインタフェースは、暗号化の前に文字列を返すことができ、全体のプロセスが正常にテスト:
7概要
記事Jasyptコンフィギュレーション情報のセキュリティ、実際のプロジェクトのアプリケーションまたは多くを達成するためのSpringboot統合。
また、プロジェクトが使用することも簡単で、暗号化と復号化の統一された方法を提供春クラウドコンフィグレーションを使用する場合。ただし、アプリケーション構成物流センターは行かなかった、またはあなたがJasyptを使用する必要があります。
社会的関心番号へようこそ< 遅いカボチャは、言ったあなたが更新していきます、> ...
ハハ、ガボールメインマイクロ文字はようこそ、賞賛の友人のポイントを作ります...
より多くの書籍、より多くの共有であり、より書き込み、以上の仕上げより。