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