24.2.7.2. 暗号化の設定
JGroups はクラスターのメンバーが共有する秘密鍵を使用してメッセージを暗号化します。送信元は共有する秘密鍵を使用してメッセージを暗号化し、受信先は同じ秘密鍵を使用してメッセージを復号化します。対称暗号化 は SYM_ENCRYPT
プロトコルを使用して設定され、ノードは共有のキーストアを使用して秘密鍵を取得します。非対称暗号化 は ASYM_ENCRYPT
プロトコルを使用して設定され、ノードは AUTH
を使用して認証された後にクラスターのコーディネーターから秘密鍵を取得します。
対称暗号化の使用
SYM_ENCRYPT
を使用するには、各ノードの JGroups 設定で参照されるキーストアを設定する必要があります。
キーストアを作成します。
以下のコマンドでは、
VERSION
を適切な JGroups JAR バージョンに置き換え、PASSWORD
をキーストアパスワードに置き換えます。$ java -cp EAP_HOME/modules/system/layers/base/org/jgroups/main/jgroups-VERSION.jar org.jgroups.demos.KeyStoreGenerator --alg AES --size 128 --storeName defaultStore.keystore --storepass PASSWORD --alias mykey
これにより、JGroups 設定で参照される
defaultStore.keystore
ファイルが生成されます。キーストアが生成されたら、2 つの方法の 1 つを使用して
SYM_PROTOCOL
で定義されます。- キーストアを 直接設定に 定義します。
- Elytron サブシステムを使用 してキーストアを参照します。
SYM_ENCRYPT
を使用する場合、AUTH
の設定は任意です。
キーストアを直接参照して対称暗号化を使用
jgroups
サブシステムでSYM_ENCRYPT
プロトコルを設定します。該当するサーバー設定ファイルに、
SYM_ENCRYPT
プロトコルと適切なプロパティー設定を追加します。このプロトコルは、以前作成されたキーストアを参照します。SYM_ENCRYPT
プロトコルはpbcast.NAKACK2
の直前に設定する必要があります。<subsystem xmlns="urn:jboss:domain:jgroups:6.0"> <stacks> <stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"/> <protocol type="PING"/> <protocol type="MERGE3"/> <protocol type="FD_SOCK"/> <protocol type="FD_ALL"/> <protocol type="VERIFY_SUSPECT"/> <protocol type="SYM_ENCRYPT"> <property name="provider">SunJCE</property> <property name="sym_algorithm">AES</property> <property name="encrypt_entire_message">true</property> <property name="keystore_name">/path/to/defaultStore.keystore</property> <property name="store_password">PASSWORD</property> <property name="alias">mykey</property> </protocol> <protocol type="pbcast.NAKACK2"/> <protocol type="UNICAST3"/> <protocol type="pbcast.STABLE"/> <protocol type="pbcast.GMS"/> <protocol type="UFC"/> <protocol type="MFC"/> <protocol type="FRAG3"/> </stack> </stacks> </subsystem>
Elytron と対称暗号化の使用
管理 CLI を使用して、
対称暗号化を使用して
作成されたdefaultStore.keystore
を参照するキーストアを elytron サブシステムに作成します。/subsystem=elytron/key-store=jgroups-keystore:add(path=/path/to/defaultStore.keystore,credential-reference={clear-text=PASSWORD},type=JCEKS)
SYM_ENCRYPT
プロトコルと適切なプロパティー設定をjgroups
サブシステムに追加します。以下の設定どおり、SYM_ENCRYPT
プロトコルはpbcast.NAKACK2
プロトコルの直前に設定する必要があります。<subsystem xmlns="urn:jboss:domain:jgroups:6.0"> <stacks> <stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"/> <protocol type="PING"/> <protocol type="MERGE3"/> <protocol type="FD_SOCK"/> <protocol type="FD_ALL"/> <protocol type="VERIFY_SUSPECT"/> <encrypt-protocol type="SYM_ENCRYPT" key-alias="mykey" key-store="jgroups-keystore"> <key-credential-reference clear-text="PASSWORD"/> <property name="provider">SunJCE</property> <property name="encrypt_entire_message">true</property> </encrypt-protocol> <protocol type="pbcast.NAKACK2"/> <protocol type="UNICAST3"/> <protocol type="pbcast.STABLE"/> <protocol type="pbcast.GMS"/> <protocol type="UFC"/> <protocol type="MFC"/> <protocol type="FRAG3"/> </stack> </stacks> </subsystem>
注記上記の例はクリアテキストのパスワードを使用しますが、認証情報ストアを定義して設定ファイル外部にパスワードを定義することもできます。認証情報ストアの設定に関する詳細は、How to Configure Server Securityの Credential Store を参照してください。
非対称暗号化の使用
ASYM_ENCRYPT
を使用するには AUTH
プロトコルを定義する必要があります。AUTH プロトコルを jgroups
サブシステムで設定する手順は、認証の設定
を参照してください。
ASYM_ENCRYPT
は 2 つの方法の 1 つで設定されます。
- 秘密鍵を生成し、設定で直接 参照します。
- キーストアを作成し、Elytron サブシステムを使用して 参照します。
秘密鍵を生成して非対象暗号化を使用
jgroups
サブシステムでASYM_ENCRYPT
プロトコルを設定します。該当のサーバー設定ファイルに
ASYM_ENCRYPT
プロトコルと適切なプロパティー設定を追加します。以下の設定どおり、ASYM_ENCRYPT
プロトコルはpbcast.NAKACK2
プロトコルの直前に設定する必要があります。<subsystem xmlns="urn:jboss:domain:jgroups:6.0"> <stacks> <stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"/> <protocol type="PING"/> <protocol type="MERGE3"/> <protocol type="FD_SOCK"/> <protocol type="FD_ALL"/> <protocol type="VERIFY_SUSPECT"/> <protocol type="ASYM_ENCRYPT"> <property name="encrypt_entire_message">true</property> <property name="sym_keylength">128</property> <property name="sym_algorithm">AES/ECB/PKCS5Padding</property> <property name="asym_keylength">512</property> <property name="asym_algorithm">RSA</property> </protocol> <protocol type="pbcast.NAKACK2"/> <protocol type="UNICAST3"/> <protocol type="pbcast.STABLE"/> <!-- Configure AUTH protocol here --> <protocol type="pbcast.GMS"/> <protocol type="UFC"/> <protocol type="MFC"/> <protocol type="FRAG3"/> </stack> </stacks> </subsystem>
Elytron と非対称暗号化の使用
キーペアが含まれるキーストアを作成します。以下のコマンドは、
mykey
というエイリアスでキーストアを作成します。$ keytool -genkeypair -alias mykey -keyalg RSA -keysize 1024 -keystore defaultKeystore.keystore -dname "CN=localhost" -keypass secret -storepass secret
管理 CLI を使用して、
defaultStore.keystore
を参照するキーストアをelytron
サブシステムに作成します。/subsystem=elytron/key-store=jgroups-keystore:add(path=/path/to/defaultStore.keystore,credential-reference={clear-text=PASSWORD},type=JCEKS)
ASYM_ENCRYPT
プロトコルと適切なプロパティー設定をjgroups
サブシステムに追加します。以下の設定どおり、ASYM_ENCRYPT
プロトコルはpbcast.NAKACK2
プロトコルの直前に設定する必要があります。<subsystem xmlns="urn:jboss:domain:jgroups:6.0"> <stacks> <stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"/> <protocol type="PING"/> <protocol type="MERGE3"/> <protocol type="FD_SOCK"/> <protocol type="FD_ALL"/> <protocol type="VERIFY_SUSPECT"/> <encrypt-protocol type="ASYM_ENCRYPT" key-alias="mykey" key-store="jgroups-keystore"> <key-credential-reference clear-text="secret" /> <property name="encrypt_entire_message">true</property> </encrypt-protocol> <protocol type="pbcast.NAKACK2"/> <protocol type="UNICAST3"/> <protocol type="pbcast.STABLE"/> <!-- Configure AUTH protocol here --> <protocol type="pbcast.GMS"/> <protocol type="UFC"/> <protocol type="MFC"/> <protocol type="FRAG3"/> </stack> </stacks> </subsystem>
注記上記の例はクリアテキストのパスワードを使用しますが、認証情報ストアを定義して設定ファイル外部にパスワードを定義することもできます。認証情報ストアの設定に関する詳細は、How to Configure Server Securityの Credential Store を参照してください。