7.3. 機密性が高い文字列を格納する Java キーストアの作成
前提条件
- Java Runtime Environment(JRE)によって提供される keytool ユーティリティー。ファイルのパスを見つけます。Red Hat Enterprise Linux では、
/usr/bin/keytoolです。
警告
JCEKS キーストアの実装は Java ベンダーごとに異なります。したがって、使用する JDK と同じベンダーの keytool ユーティリティーを使用してキーストアを生成する必要があります。
別のベンダーの JDK で実行されている JBoss EAP インスタンスで、あるベンダーの JDK からキーツールによって生成されたキーストアを使用すると、以下の例外が発生します。
java.io.IOException: com.sun.crypto.provider.SealedObjectForKeyProtector
java.io.IOException: com.sun.crypto.provider.SealedObjectForKeyProtector
手順7.2 Java キーストアの設定
キーストアと他の暗号化された情報を格納するディレクトリーを作成します。
キーストアおよびその他の重要な情報を保存するディレクトリーを作成します。この手順では、ディレクトリーはEAP_HOME/vault/であることを前提としています。このディレクトリーには機密情報が含まれるため、アクセスは、一部のユーザーに制限する必要があります。JBoss EAP を実行しているユーザーアカウントには少なくとも読み書き込みアクセスが必要です。keytool ユーティリティーで使用するパラメーターを決定します。
以下のパラメーターの値を決めます。- alias
- エイリアスは、vault やキーストアに保存されている他のデータの一意識別子です。エイリアスは大文字と小文字を区別しません。
- storetype
- ストアタイプはキーストアのタイプを指定します。値は、
jceksが推奨されます。 - keyalg
- 暗号化に使用するアルゴリズム。JRE およびオペレーティングシステムのドキュメントを参照して、利用可能な他の選択肢を確認します。
- keysize
- 暗号化キーのサイズは、ブルートフォースでの暗号解除の難易度に影響します。適切な値の詳細は、keytool ユーティリティーとともに配布されるドキュメントを参照してください。
- storepass
storepassの値は、キーストアに対する認証に使用されるパスワードであるため、キーを読み取ることができます。パスワードは 6 文字以上である必要があります。パスワードは、キーストアへのアクセス時に入力する必要があります。このパラメーターを省略すると、コマンドの実行時に入力が求められます。- keypass
keypassの値は、特定のキーへのアクセスに使用されるパスワードで、storepassパラメーターの値と一致する必要があります。- validity
validityの値は、鍵の有効期間(日数)です。- keystore
キーストアの値は、キーストアの値が保存されるファイルパスおよびファイル名です。キーストアファイルは、データが最初に追加されると作成されます。正しいファイルパスセパレーターを使用するようにしてください。Red Hat Enterprise Linux や同様のオペレーティングシステムの場合は/(スラッシュ)、Microsoft Windows Server の場合は\(バックスラッシュ)を使用してください。
Keytool ユーティリティー に は、その他の多くのオプションがあります。詳細は、JRE またはオペレーティングシステムのドキュメントを参照してください。keytool コマンドを実行します。
オペレーティングシステムのコマンドラインインターフェースを起動し、収集した情報を指定して keytool ユーティリティーを実行します。
例7.1 Java キーストアの作成
keytool -genseckey -alias vault -storetype jceks -keyalg AES -keysize 128 -storepass vault22 -keypass vault22 -validity 730 -keystore EAP_HOME/vault/vault.keystore
$ keytool -genseckey -alias vault -storetype jceks -keyalg AES -keysize 128 -storepass vault22 -keypass vault22 -validity 730 -keystore EAP_HOME/vault/vault.keystore
結果
この例では、EAP_HOME/vault/vault.keystore ファイルにキーストアが作成されている。JBoss EAP では、パスワードなどの暗号化された文字列を保存するために使用されるエイリアス vault を持つ単一のキーを保存します。