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